【发布时间】:2020-07-12 23:02:11
【问题描述】:
我想看看 1970 年 1 月 1 日 00:00:00 是否实际上对应于 0 秒,我写了以下内容:
#include <stdio.h>
#include <time.h>
int main(void) {
int year = 1970;
struct tm t = {0};
t.tm_mday = 1; // January
t.tm_year = year - 1900;
t.tm_hour = 0;
t.tm_isdst = -1;
printf("%ld\n", mktime(&t));
return 0;
}
它给了我一个 -3600 的值。我哪里错了?
PS:使用 GCC v.10.1 测试。我尝试在另一个架构下使用另一个编译器,它给了我正确的值。
【问题讨论】:
-
这可能与时区和夏令时有关吗?
-
不应该导致从那个日期开始的秒数吗?不分时区?
-
@RobertoRocco 从那天到什么时候?
-
秒数时间被定义为UTC,但
mktime()被定义为使用本地时间;这就是区别