【发布时间】:2019-02-22 18:39:21
【问题描述】:
在一个简单的测试中,从 de Unix Epoch (01/01/1970 00:00:00 UTC) 到 2019 年 2 月 22 日经过的时间以秒为单位,它返回了大量 18446744072104596016强>
为什么不只是 1550793600 秒?
time_t 值不是可移植的吗?
在 gdb 控制台中打印出的tm struct 在调用mktime() 之前具有以下值:
(gdb) p ltm
$4 = {tm_sec = 0, tm_min = 0, tm_hour = 0, tm_mday = 22, tm_mon = 1, tm_year = 19, tm_wday = 0, tm_yday = 0, tm_isdst = 0}
【问题讨论】:
-
您如何获取并打印
time_t值? -
发布显示
mktime()返回如此巨大值的实际代码。 -
tm_year = 19那是 1919 年,它返回一个很大的负数。 -
@KamilCuk 你成功了!这回答了一切!今年的争论超出了预期,我没有意识到它超出了预期的范围。
-
@KamilCuk tm_year = 19 那是 1919 年,它返回一个很大的负数。 确实。我花了一段时间确认 1919 年 2 月 22 日的 Unix 日期实际上是
18446744072104596016,如果 64 位time_t被视为无符号值。