Преобразование старого и нового локального времени в UTC под Windows XP / Server 2003 - PullRequest
4 голосов
/ 11 августа 2009

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

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

Приложение написано на C ++ и работает на Server 2003.

Опции, которые я исследовал:

Итак ...

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

  • ... любые другие предложения?

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

Ответы [ 2 ]

2 голосов
/ 14 августа 2009

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

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

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

0 голосов
/ 12 августа 2009

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

...