Преобразование старого и нового местного времени в UTC под управлением Windows XP / Server 2003

StackOverflow https://stackoverflow.com/questions/1261566

Вопрос

Мое приложение преобразует прошлые и настоящие даты из местного времени в UTC.

Мне нужно убедиться, что я буду соблюдать все будущие обновления DST для Windows, сохраняя при этом правильную обработку прошлых дат.

Приложение написано на C ++ и запущено на сервере 2003.

Варианты, которые я исследовал:

Итак...

  • ...кто-нибудь еще использует необработанное решение реестра для этого?

  • ...есть еще какие-нибудь предложения?

(редактировать:выяснил dst_calc_engine не поддерживает обновления в летнее время)

Это было полезно?

Решение

Я думаю, я бы предпочел повторно реализовать GetTimeZoneInformationForYear и возможно GetDynamicTimeZoneInformation на основе информации в реестре по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones.

Таким образом, ваш код будет следовать обновлениям Windows, и вы сможете заменить грязный код для фактической реализации на платформах более высокого уровня.

Поскольку вы не хотите использовать внешнюю базу данных, я думаю, что другие варианты невозможны.

Другие советы

Вы могли бы использовать gmtime() и localtime() для дат 2007 года и более поздних версий (и воспользоваться преимуществами обновлений Windows DST) и используйте Boost или одно из других упомянутых вами решений, чтобы использовать правильные правила перехода на летнее время для 2006 года и более ранних версий.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top