gpt4 book ai didi

windows - 如何使用 Windows API 在任何时区之间转换 utc 日期时间?

转载 作者:可可西里 更新时间:2023-11-01 10:33:31 25 4
gpt4 key购买 nike

我们正在寻找使用 Windows API 在时区之间(双向)转换 utc 日期时间的方法,即。使用由 Microsoft 维护的 Windows 时区数据。

这可能吗?

SystemTimeToTzSpecificLocalTimeEx 和 TzSpecificLocalTimeToSystemTimeEx 似乎符合要求,但两者都需要正确的 DYNAMIC_TIME_ZONE_INFORMATION,这将使球门柱移动到获得正确的 DYNAMIC_TIME_ZONE_INFORMATION 结构。

GetTimeZoneInformation 和 GetDynamicTimeZoneInformation 仅提供当前时区。

GetTimeZoneInformationForYear(转换过去的日期时间需要)需要一个动态时区作为输入。

如何获得另一个时区的有效时区信息结构?

信息在注册表中,但作为 TZI 字段二进制文件,是否有关于如何将 TZI 字段解码为 TIME_ZONE_INFORMATION 的规范?

从 Win2012 开始有一个 EnumDynamicTimeZoneInformation,但是我们不能依赖它,因为我们需要支持 Win2008R2...

PS:使用 TZDB 来满足我们的需求是有问题的,因为我们将负责在现场更新它。这个问题的一个关键方面是我们想要一种在 TZ 之间转换的方法,而不必自己维护和部署 TZ 信息,因为 can change very quickly .

最佳答案

枚举注册表似乎是唯一的方法,TZI 字段结构在https://msdn.microsoft.com/en-us/library/windows/desktop/ms725481(v=vs.85).aspx 中有描述。如下

typedef struct _REG_TZI_FORMAT
{
LONG Bias;
LONG StandardBias;
LONG DaylightBias;
SYSTEMTIME StandardDate;
SYSTEMTIME DaylightDate;
} REG_TZI_FORMAT;

关于windows - 如何使用 Windows API 在任何时区之间转换 utc 日期时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40018737/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com