У меня есть временная метка unix, которая при преобразовании с использованием ctime отображается как Thu Mar 26 15:30:26 2007
, но мне нужно только Thu Mar 26 2007
.
Как изменить или обрезать, чтобы исключить время (ЧЧ:ММ:СС)?
У меня есть временная метка unix, которая при преобразовании с использованием ctime отображается как Thu Mar 26 15:30:26 2007
, но мне нужно только Thu Mar 26 2007
.
Как изменить или обрезать, чтобы исключить время (ЧЧ:ММ:СС)?
Поскольку у вас есть значение time_t
, вы можете использовать localtime()
и < a href="http://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.html" rel="nofollow">strftime()
:
#include <time.h>
#include <stdio.h>
int main(void)
{
time_t t = time(0);
struct tm *lt = localtime(&t);
char buffer[20];
strftime(buffer, sizeof(buffer), "%a %b %d %Y", lt);
puts(buffer);
return(0);
}
В качестве альтернативы, если вы чувствуете, что должны использовать ctime()
, то:
#include <time.h>
#include <stdio.h>
#include <string.h>
int main(void)
{
time_t t = time(0);
char buffer[20];
char *str = ctime(&t);
memmove(&buffer[0], &str[0], 11);
memmove(&buffer[11], &str[20], 4);
buffer[15] = '\0';
puts(buffer);
return(0);
}
Из справочной страницы strptime()
:
В следующем примере показано использование strptime()
и strftime()
.
#include <stdio.h>
#include <time.h>
int main() {
struct tm tm;
char buf[255];
strptime("2001-11-12 18:31:01", "%Y-%m-%d %H:%M:%S", &tm);
strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm);
puts(buf);
return 0;
}
Приспособьтесь к своим потребностям.