【发布时间】:2012-10-14 09:25:39
【问题描述】:
我目前正在编写一些 C 代码,并且正在尝试将人类可读的日期转换为纪元时间戳(unix 时间戳)。但是,它总是返回一个负数。我正在使用struct tm 并硬编码日期的值,直到我让它正常工作。下面是代码
struct tm t;
time_t t_of_day;
t.tm_year = 2012 - 1970;
t.tm_mon = 9;
t.tm_mday = 24;
t.tm_hour = 11;
t.tm_min = 34;
t.tm_sec = 30;
t.tm_isdst = 1;
t_of_day = mktime(&t);
printf("Epoch time stamp is: %ld\n", t_of_day);
当这段代码执行时,我得到-858000330的输出。
感谢您提供的任何帮助。
【问题讨论】:
-
为什么要减去 1970?只有 1900-2038 年可用,距离 42 年还很远
-
所以我应该减去 1900,我认为时间戳是从 1970 年 1 月 1 日开始