mktime() 返回的意外值
Unexpected value returned from mktime()
我准备了以下结构:
struct tm tDepartureTime;
tDepartureTime.tm_min = 24;
tDepartureTime.tm_hour = 13;
tDepartureTime.tm_mday = 11;
tDepartureTime.tm_mon = 2 - 1;
tDepartureTime.tm_year = 2017 - 1900;
然后我使用 mktime() 来获取秒数。
unsigned long qTime = mktime( &tDepartureTime );
但它 returns 我的号码 1731157832 相当于 09.11.2024 的时间戳。
哪里可能有问题?
您的 tm
结构的某些字段未初始化。具体来说,这些是 tm_sec
、tm_mday
、tm_wday
、tm_yday
和 tm_isdst
。
其中,您至少需要手动设置tm_sec
。如果它的值随机地变得非常高,这就解释了遥远的未来。
您还可以通过将第一行更改为 struct tm tDepartureTime = {0}
来用零初始化整个结构。这可能是最好的解决方案。
我准备了以下结构:
struct tm tDepartureTime;
tDepartureTime.tm_min = 24;
tDepartureTime.tm_hour = 13;
tDepartureTime.tm_mday = 11;
tDepartureTime.tm_mon = 2 - 1;
tDepartureTime.tm_year = 2017 - 1900;
然后我使用 mktime() 来获取秒数。
unsigned long qTime = mktime( &tDepartureTime );
但它 returns 我的号码 1731157832 相当于 09.11.2024 的时间戳。 哪里可能有问题?
您的 tm
结构的某些字段未初始化。具体来说,这些是 tm_sec
、tm_mday
、tm_wday
、tm_yday
和 tm_isdst
。
其中,您至少需要手动设置tm_sec
。如果它的值随机地变得非常高,这就解释了遥远的未来。
您还可以通过将第一行更改为 struct tm tDepartureTime = {0}
来用零初始化整个结构。这可能是最好的解决方案。