2

我想将历史上的各种位置/日期/时间从 GMT 转换为当地时间。似乎SystemTimeToTzSpecificLocalTimeFileTimeToLocalFileTime. 当日期/时间对还包括不同的位置时,转换会变得很棘手。我在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 的问题?

4

1 回答 1

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

于 2008-09-15T20:36:38.607 回答