【问题标题】:How do I convert GMT to LocalTime in Win32 C?如何在 Win32 C 中将 GMT 转换为 LocalTime?
【发布时间】:2010-09-09 03:35:39
【问题描述】:

我想将历史上的各种位置/日期/时间从 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 的问题?

【问题讨论】:

    标签: c winapi timezone


    【解决方案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

    【讨论】:

    • 感谢您的回复——我已更新我的问题以反映您提供的信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-17
    • 2012-02-15
    • 2011-07-26
    • 1970-01-01
    • 2020-12-13
    • 2020-11-23
    • 1970-01-01
    相关资源
    最近更新 更多