COleDateTime добавление часа при построении с time_t - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть 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());

1 Ответ

0 голосов
/ 05 декабря 2018

Ответил на мой собственный вопрос:

COleDateTime time_t конструктор использует CTime внутренне, что, независимо от того, что сказано в документации для COleDateTime, действительно учитываетпеременные среды для локали и часового пояса.

...