gpt4 book ai didi

c - mktime() 返回大量秒数

转载 作者:太空宇宙 更新时间:2023-11-04 06:11:40 25 4
gpt4 key购买 nike

在一个简单的测试中,获取从 de Unix Epoch (01/01/1970 00:00:00 UTC) 到 2019 年 2 月 22 日的耗时(以秒为单位),它返回了大量的 18446744072104596016

为什么不只是 1550793600 秒?

不是 time_t值(value)便携?


tm struct在调用 mktime() 之前,在 gdb 控制台中打印出以下值:

(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}

最佳答案

给定

tm_year = 19

如果您期望该输入代表 2019 年,那么您就错误地使用了 mktime()

根据 7.27.1 Components of time, paragraph 4 C标准的:

The tm structure shall contain at least the following members, in any order. The semantics of the members and their normal ranges are expressed in the comments.

     int    tm_sec;           //   seconds after the minute -- [0, 60]
int tm_min; // minutes after the hour -- [0, 59]
int tm_hour; // hours since midnight -- [0, 23]
int tm_mday; // day of the month -- [1, 31]
int tm_mon; // months since January -- [0, 11]
int tm_year; // years since 1900
int tm_wday; // days since Sunday -- [0, 6]
int tm_yday; // days since January 1 -- [0, 365]
int tm_isdst; // Daylight Saving Time flag

请注意,tm_year 值是自 1900 年以来的年数

您可能会得到 1919 年 2 月 22 日的 time_t 值,即 -1604966400,或 18446744072104596016 unsigned。

关于c - mktime() 返回大量秒数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54833238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com