将时间转换为日期/时间格式

时间:2019-07-04 08:56:15

标签: c datetime epoch

我有一个持有纪元时间的字符,我试图将其转换为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输出随机数。

1 个答案:

答案 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()