UTC与悉尼AEDT时区转换后TimeSpan差1小时的原因咨询
问题解答
核心原因:混淆了悉尼夏令时与标准时间的UTC偏移
你误以为悉尼AEDT(澳大利亚东部夏令时)的UTC偏移是+10小时,这是错误的——AEDT对应的是UTC+11,UTC+10是悉尼的标准时间AEST(澳大利亚东部标准时间)。
当处于AEDT时段时,本地时间比UTC早11小时,所以:
- 你解析的
24-03-1961是悉尼夏令时的本地时间(00:00:00) - 转成UTC后是
23-03-1961 13:00:00 - 两者相减自然得到
-11小时的结果
补充:1961年3月24日确实在夏令时范围内
澳大利亚1961年的夏令时从1月1日持续到3月26日,3月24日还在夏令时期间,当时的时区偏移就是UTC+11,和当前AEDT规则一致,不存在历史时区调整的问题。
验证代码
你可以用这段代码确认当时的时区偏移:
var localDate = DateTime.Parse("24-03-1961"); var sydneyZone = TimeZoneInfo.FindSystemTimeZoneById("AUS Eastern Standard Time"); var utcOffset = sydneyZone.GetUtcOffset(localDate); // 输出utcOffset会得到00:11:00:00
内容的提问来源于stack exchange,提问作者janci
相关产品推荐
相关产品推荐

