mktime()

时间:2016-12-16 12:24:00

标签: c++ c time timestamp 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 );

但它返回的数字 1731157832 ,这是09.11.2024的等效时间戳。 哪里可能有问题?

1 个答案:

答案 0 :(得分:3)

tm结构的某些字段未初始化。具体来说,这些是tm_sectm_mdaytm_wdaytm_ydaytm_isdst

其中,您需要至少手动设置tm_sec。如果它的值随机变得非常高,这就解释了未来的时间。

您还可以通过将第一行更改为struct tm tDepartureTime = {0}来使用零初始化整个结构。这可能是最好的解决方案。