ASP.NET 3.5:难以获取时区';s电流偏移量

ASP.NET 3.5:难以获取时区';s电流偏移量,.net,timezone,.net,Timezone,不知道我做错了什么。我正在尝试获取东澳大利亚的当前UTC小时偏移量。我使用的代码是GMT+10小时返回的,而它应该是11小时,因为他们现在在DST中 这是我用来获得它的: With TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time") Console.Write(.GetUtcOffset(Now.ToUniversalTime).Hours) End With 它似乎输出“基本”偏移量,而不考虑DST。如何获得

不知道我做错了什么。我正在尝试获取东澳大利亚的当前UTC小时偏移量。我使用的代码是GMT+10小时返回的,而它应该是11小时,因为他们现在在DST中

这是我用来获得它的:

With TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time")
  Console.Write(.GetUtcOffset(Now.ToUniversalTime).Hours)
End With
它似乎输出“基本”偏移量,而不考虑DST。如何获得考虑DST的实际电流偏移量

根据jlew的建议更新1。我试着让IsDaylight节省时间,但结果似乎不一致。我知道东澳大利亚和新西兰目前都在DST

但是,以下返回值为FALSE(不正确):

并且以下返回TRUE(正确):

更新2在看到后,我检查了isambiguostime,但这两种情况都是错误的。所以它不是“模棱两可”,然而“东澳大利亚”区并没有在应该的时候使用DST

更新3看到后,我从MS安装了,但没有任何乐趣。东澳大利亚区仍然不正确

我还尝试在另外两台不同的服务器上运行代码,结果相同。我的是.NETV3.5,其他的是v4

更新4正常,可能已解决问题。再次查看系统时区ID列表,我注意到东澳大利亚的另一个时区名称。它被称为“澳大利亚东部标准时间”。使用该区域,它确实会产生正确的、DST友好的结果。使用“澳大利亚东部标准时间”则不适用

环顾四周,这似乎是一种反常的感觉,因为同一个国家同一时区的不同城市可能有不同的DST规则。谁让他们这么做的

没有哪个区域ID与哪个城市相关的全球地图是个问题。当然,这对微软来说并不难提供。可以使用DisplayName属性显示用户可以选择的列表,但是如果应用程序需要将时间从一个城市转换到另一个城市,它需要知道这些城市应该使用哪些ID


如果MS包含一个从城市到区域的查找,至少对于主要城市来说是这样,那么使用时区将需要很多麻烦。

我不知道是否有自动方式,但您可以使用和来计算必要的调整。

如果有这样的列表,请单击任务栏中的时钟并导航到时区选择器。请注意布里斯班市是多么的特别。它位于非洲大陆的远东边缘,自1992年以来就没有观测到夏令时。我的意思是我们需要一个.NET列表,这样我们可以自动将城市名称与区域ID匹配。我意识到这太晚了,但我只是想表示同情。我搬到了墨尔本,在那里我不得不开发一个与布里斯班通信的应用程序(显然是高度时间敏感的),而布里斯班在同一时区不遵守DST。。。该死的澳大利亚人!
TimeZoneInfo.FindSystemTimeZoneById("E. Australia Standard Time").IsDaylightSavingTime(Now.ToUniversalTime)
TimeZoneInfo.FindSystemTimeZoneById("New Zealand Standard Time").IsDaylightSavingTime(Now.ToUniversalTime)