2

我有一个 struct tm使用 转换为 UNIX time_t 的对象,mktime当传递给 的构造函数时,它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());
4

1 回答 1

2

回答了我自己的问题:

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

于 2018-12-05T12:25:29.623 回答