有没有办法为将来的点获得UTC时间转换?

时间:2012-09-07 18:27:33

标签: windows winapi

在Windows中,我可以通过调用GetTimeZoneInformation轻松地进行UTC转换。结果我得到的结构将有两个不同的偏差值,一个用于标准时间,一个用于DST,一个BiasCode表示我们当前在哪个。如果我们只关心当前时刻那就没关系。

但我有一个用户调用的API来检索有关即将发生的事件的数据。数据以当地时间存储在数据库中,用户希望以UTC格式存储,因此我运行转换,一切都很好......除了我们在几周内即将发生时间变化。如果我在时间的另一边报告事件的变化与今天的偏见,它们将会被关闭一小时。

我有什么可以调用的内容,例如GetTimeZoneInformation,除了我传递日期和时间,然后它给我的BiasCode将在那个时候,而不是现在的那个? (是的,我知道规则每年都会发生变化。我不会在未来几周内寻找任何东西。)

1 个答案:

答案 0 :(得分:2)

SystemTimeToTzSpecificLocalTime - 让我引用MSDN -

  

将协调世界时(UTC)的时间转换为指定的时间   时区对应的当地时间。

您可以提供过去和未来的输入UTC时间并获取本地时间转换,并考虑该特定时刻有关DST设置的所有详细信息。

TzSpecificLocalTimeToSystemTime是进行逆转换的双重功能。

对我来说更重要的问题是,即使是同一地区,DST设置也会不时变化,每年的转换可能会有所不同(这当然主要影响过去的事件,而不是将来)。我假设此API也会处理此问题,跟踪DST规则随时间变化的历史记录。

UPD。这个假设是正确的,MSDN提到:

  
      
  • 时区对新旧年份使用不同的UTC偏移量。
  •   
  • 要转换的UTC时间和计算的当地时间是不同的年份。
  •