4

我的应用程序将过去和现在的日期从本地时间转换为 UTC。

我需要确保在正确处理过去日期的同时,我将尊重 Windows 的任何未来 DST 更新。

该应用程序是用 C++ 编写的,在 Server 2003 上运行。

我研究过的选项:

所以...

  • ...还有其他人使用原始注册表解决方案来执行此操作吗?

  • ...还有其他建议吗?

(编辑:发现dst_calc_engine不支持 DST 更新

4

2 回答 2

2

我想我更愿意重新实现GetTimeZoneInformationForYear并且可能GetDynamicTimeZoneInformation基于注册表中的信息HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones

这样,您的代码将跟随 Windows 更新,您可以将脏代码换出,以便在上层平台上实际实现。

Since you don't want to use an external database, I think no other options are viable.

于 2009-08-14T09:37:51.977 回答
0

您可以将 gmtime() 和 localtime() 用于 2007 年及以后的日期(并利用 Windows DST 更新),并使用 Boost 或您提到的其他解决方案之一来使用 2006 年及更早的正确 DST 规则。

于 2009-08-12T05:29:06.957 回答