gpt4 book ai didi

c++ - difftime 在特定日期返回奇怪的值

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:29 25 4
gpt4 key购买 nike

<分区>

我不明白为什么 difftime 会返回一个奇怪的值,所以这是我正在使用的数据集和代码。

代码:

struct tm currentTime;
currentTime.tm_year = 2014 - 1900;
currentTime.tm_mon = 9 - 1;
currentTime.tm_mday = 6;
currentTime.tm_hour = 23;
currentTime.tm_min = 59;
currentTime.tm_sec = 0;
currentTime.tm_wday = 7 - 1;

struct tm previousTime;
previousTime.tm_year = 2014 - 1900;
previousTime.tm_mon = 9 - 1;
previousTime.tm_mday = 6;
previousTime.tm_hour = 23;
previousTime.tm_min = 58;
previousTime.tm_sec = 0;
previousTime.tm_wday = 7 - 1;

cout << difftime(mktime(&currentTime), mktime(&previousTime)) << endl;

这会打印:

3660

为什么我得到这个值有什么想法吗?我应该得到 60,因为有 1 分钟的差异。我尝试了其他一些值,它们都有效..我在 mingw 中使用 CodeBlocks。

编辑:答案:使用 tm_isdst 解决了问题!该死的 DST :P

struct tm currentTime;
currentTime.tm_year = 2014 - 1900;
currentTime.tm_mon = 9 - 1;
currentTime.tm_mday = 6;
currentTime.tm_hour = 23;
currentTime.tm_min = 59;
currentTime.tm_sec = 0;
currentTime.tm_wday = 7 - 1;
currentTime.tm_isdst = - 1;

struct tm previousTime;
previousTime.tm_year = 2014 - 1900;
previousTime.tm_mon = 9 - 1;
previousTime.tm_mday = 6;
previousTime.tm_hour = 23;
previousTime.tm_min = 58;
previousTime.tm_sec = 0;
previousTime.tm_wday = 7 - 1;
previousTime.tm_isdst = - 1;

cout << difftime(mktime(&currentTime), mktime(&previousTime)) << endl;

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