将毫秒转换为time_t

时间:2013-06-26 09:12:34

标签: c time ctime time.h time-t

我有从2004年到特定日期的毫秒数。我想将其转换为time_t以使用ctime()?

显示它

也许还有另一种方法可以通过这个毫秒时间戳来显示日期,是否有人有一个?

2 个答案:

答案 0 :(得分:1)

假设“从2004年开始”是指“从2004年00:00 UTC开始”,那么

time_t time = 1072915200 + millis / 1000;

请注意ctime()将以本地时间而非UTC显示结果。

答案 1 :(得分:0)

time_t只有一秒的精确度。如果您没问题,可以使用mktime()计算2004-01-01的time_t值,并以秒为单位将其添加到时间值。

struct tm tp;
memset(&tp, 0, sizeof(tp));
tp.tm_mday = 1;
tp.tm_mon = 0;
tp.tm_year = 2004 - 1900;
time_t offset = mktime(&tp);

time_t realtime = offset + yourtime / 1000;

printf("%s", ctime(&realtime));