如何在Win32 C中将GMT转换为本地时间?

时间:2008-09-15 20:11:03

标签: c winapi timezone

我想将历史记录中的各种位置/日期/时间从GMT转换为当地时间。似乎SystemTimeToTzSpecificLocalTime优于FileTimeToLocalFileTime。当日期/时间对也包括各种位置时,转换变得毛茸茸。我在ftp://ftp.iana.org/tz/releases找到了一个数据集 - ftp://elsie.nci.nih.gov/pub/ - 在历史和空间中似乎很好地完成了,但它似乎是为一个时区而不是所有时区编译的

GetDynamicTimeZoneInformationGetTimeZoneInformationForYear功能仅在Vista / Server 2008开始提供,我将机器恢复到NT 4.0。我可能会尝试在新系统上有条件地使用它们。

是否有一个很好的C包可以解决我对Windows XP和NT 4.0的问题?

1 个答案:

答案 0 :(得分:1)

SystemTimeToTzSpecificLocalTime是正确的功能,但您需要一种方法来填充TIMEZONE_INFO结构的完整数据库。

有关如何从注册表本身构建一组TIMEZONE_INFO结构的详细信息,请参阅egghead cafe上的此主题:
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