我有一个持有纪元时间的字符,我试图将其转换为YYYY / mm / dd / HH:MM:SS的日期/时间格式,
我一直在使用strftime,但似乎无法正确使用
有人可以帮我吗?
time_t eventFinish = endTime;
struct tm *tm2 = localtime(&eventFinish);
//syslog( LOG_INFO, "eventFinish:: %s", eventFinish);
char buf2[64];
strftime( buf2, sizeof( buf2 ), "%Y%m%d%H%M%S", &tm2 );
syslog( LOG_INFO, "Your time: %s", buf2 );
eventFinish输出我期望的纪元时间,buf2输出随机数。
答案 0 :(得分:1)
您必须先将Unix时间戳转换为struct tm
time_t ts = 1562230784; // current time as example
struct tm *tm = localtime(&ts);
,然后将其与strftime()
一起使用:
char buf[64];
strftime(buf, sizeof(buf), "%Y/%m/%d/%H:%M:%S", tm);
printf("Your time: %s\n", buf);
相关结构在time.h
中定义。
这应该做您想要的。
请注意,这将返回系统中配置的本地时区中的时间。要获取UTC,可以使用gmtime()
代替localtime()
。