如何在Win32 C中将GMT转换为LocalTime?

问题描述:

我想将历史中的各种位置/日期/时间从GMT转换为当地时间。看起来SystemTimeToTzSpecificLocalTimeFileTimeToLocalFileTime好。当日期/时间对也包含不同的位置时,转换会变得多毛。我发现一个数据集ftp://ftp.iana.org/tz/releases - 是ftp://elsie.nci.nih.gov/pub/ - 这似乎很好地完成了历史和空间,但它似乎被设计为编译一个时区,而不是所有的人。如何在Win32 C中将GMT转换为LocalTime?

GetDynamicTimeZoneInformationGetTimeZoneInformationForYear函数只能在Vista/Server 2008中开始使用,并且我的机器可以回到NT 4.0。我可能会尝试在新系统上有条件地使用它们。

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

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