c++ - mktime() 返回的意外值

标签 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 的时间戳。 哪里可能有问题?

最佳答案

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

其中,您至少需要手动设置tm_sec。如果它的值随机地变得非常高,这就解释了遥远的 future 。

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

关于c++ - mktime() 返回的意外值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41184351/

相关文章:

mysql - 如何将时间四舍五入到最接近的 15 分钟段

时间:2019-03-08 标签:c#datetimepickersettime

c++ - 如何在C/C++中将 double 或浮点型可变数字存储在数组中

c++ - 无法正确输出文件

c++ - 在方法中将 Unicode CString (wchar_t) 转换为 const char *

c - 序列点 "immediately before a library function returns"的结果是什么?

c - Mini-XML 未解析的外部符号

r - 将Zoo转换为数据框

c++ - const 和 constexpr 指针的区别

c - 如何在c中将特定条目移动到队列头?