2008-09-15 5 views
2

Я хочу конвертировать различные местоположения/даты/времени в историю с GMT по местному времени. Кажется, что SystemTimeToTzSpecificLocalTime лучше, чем FileTimeToLocalFileTime. Когда пары даты и времени также включают различные местоположения, преобразование становится волосатым. Я нашел набор данных в ftp://ftp.iana.org/tz/releases - был ftp://elsie.nci.nih.gov/pub/ - это, кажется, красиво заполнено историей и пространством, но, похоже, оно предназначено для компиляции для одного часового пояса, а не для всех.Как преобразовать GMT в LocalTime в Win32 C?

GetDynamicTimeZoneInformation и GetTimeZoneInformationForYear функции доступны только в Vista/Server 2008, и у меня есть машины для NT 4.0. Я, вероятно, попытаюсь использовать их условно на более новых системах.

Есть ли хороший пакет C, который решит проблему для меня для Windows XP и NT 4.0?

ответ

1

SystemTimeToTzSpecificLocalTime - это правильная функция для этого, но вам нужен способ заполнить полную базу данных структур TIMEZONE_INFO.

Для получения дополнительной информации о том, как вы можете создать набор TIMEZONE_INFO структур из самого реестра см этой темы на Умник кафе:
http://www.eggheadcafe.com/software/aspnet/31656478/get-current-time-in-diffe.aspx

Чтобы получить вещи действительно правильно через законодательные изменения, вы будете нуждаться GetDynamicTimeZoneInformation и GetTimeZoneInformationForYear. См. http://msdn.microsoft.com/en-us/library/ms724421(VS.85).aspx.

+0

Спасибо за ваш ответ. Я обновил свой вопрос, чтобы отразить информацию, которую вы дали. – piCookie 2008-09-15 21:48:29