gpt4 book ai didi

c++ - COleDateTime 在使用 time_t 构造时增加一个小时

转载 作者:搜寻专家 更新时间:2023-10-31 02:04:20 32 4
gpt4 key购买 nike

我有一个使用 mktime 转换为 UNIX time_t 的 struct tm 对象,当传递给 COleDateTime 的构造函数时,它似乎是添加一个小时以考虑夏令时(英国时间),即使 COleDateTime 的文档建议它忽略 DST。

如果我使用 SYSTEMTIME 创建时间并将该对象传递给 COleDateTime,问题就会消失。有谁知道为什么会这样?这是来自遗留代码,因此将所有内容更改为 SYSTEMTIME 可能不是解决方案。

这是我的示例代码:

timeinfo.tm_year = 2018 - 1900;
timeinfo.tm_mon = 6 - 1;
timeinfo.tm_mday = 1;
timeinfo.tm_isdst = 0;
timeinfo.tm_hour = 10;
timeinfo.tm_min = 30;
timeinfo.tm_sec = 40;

auto unix = mktime( &timeinfo );
printf("UNIX time %lld\n", unix);
COleDateTime date(unix);
printf("COleDateTime: %f\n", date.m_dt);
CString res = date.Format();
printf("Formatted: %ls\n", res.GetString());

最佳答案

回答了我自己的问题:

COleDateTime time_t 构造函数在内部使用 CTime,无论 COleDateTime 的文档怎么说,是否考虑了语言环境和时区的环境变量。

关于c++ - COleDateTime 在使用 time_t 构造时增加一个小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53631788/

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