TimeZoneInfo.ConvertTime from PST to UTC to AEST - off by one hour
我转换了一个字符串,表示我用来创建
1 |
使用它,我创建一个
1 2 3 | var pacificTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"); var dateTimeNoKind = new DateTime(pacificDateTime.Ticks, DateTimeKind.Unspecified) var DateTimeOffsetValue = TimeZoneInfo.ConverTimeToUtc(dateTimeNoKind, pacificTimeZoneInfo) // 11/16/2016 11:00:00 PM |
到现在为止还挺好。 UTC与Pacific之间的区别在于UTC提前8小时(给定时间在夏令时内)。
然后我想从UTC转换为AEST - 但这是出现问题的地方:
1 2 | var australianEasternTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time"); TimeZoneInfo.ConvertTime(DateTimeOffsetValue, australianEasternTimeZoneInfo) // 11/17/2016 10:00:00 AM |
AEST比UTC早10个小时。 我曾预计该值为
作为测试,当我从UTC时间转换为PST或GMT或EST时,它们似乎正确地转换回来。
我觉得我错过了一些明显的东西或忽略了一些简单的东西?
来自维基百科的澳大利亚时间文章:
澳大利亚有两个东部时区。 在东北部,UTC + 10全年适用。 在东南部,UTC + 10适用于标准时间,UTC + 11适用于白天时间(又称夏令时)。
东北地区(昆士兰州)使用IANA时区标识符
-
如果您要转换昆士兰州,请使用
"E. Australia Standard Time" 。 -
如果您要转换为新南威尔士州,请使用
"AUS Eastern Standard Time" 。
有关这些标识符的混淆性,请参阅timezone标记wiki中有关Windows时区的部分。
如果您想使用标准IANA标识符,请使用Noda Time。