如何获得正确的时区偏移(进出夏令时)

时间:2013-10-10 07:04:21

标签: .net vb.net timezone dst

我从网站上找到了以下代码(抱歉,我现在不记得网站上的参考资料),但是,它给了我计算机当前的时区偏移量。例如,这段代码:

Dim plusminus As String = If((tz.Hours > 0), "+", "-")
Dim NewTimeZone As String = String.Format("{0}{1:00}:{2:00}", plusminus, Math.Abs(tz.Hours), tz.Minutes)

给我'+09:30'作为输出。这是完美的。然而,由于夏令时已经生效,相同的代码现在给我'+10:30',这实际上是不正确的。

有人可以请一个更好的方法来正确检索偏移(夏令时内外)并以相同的格式返回(+09:30)

提前致谢

1 个答案:

答案 0 :(得分:3)

如果我理解正确,您希望找到UTC与当前时间之间的差异,而不管夏令时如何?

如果我是正确的,那么以下将会做你想要的:

Dim tzi As TimeZoneInfo = TimeZoneInfo.Local
Dim offset As TimeSpan = tzi.BaseUtcOffset
Dim plus As String = If(offset.TotalMinutes >= 0, "+", "")
Dim newTimeZone As String = String.Format("{0}{1:00}:{2:00}", plus, offset.Hours, offset.Minutes)

在我的机器上输出+00:00(我的当地时间是UTC + 1但我们目前在DST中)