我们的政府喜欢改变当地时间或启用夏令时.
MS为俄罗斯部署补丁以考虑新的时间变化.
现在有一个问题,即变化的历史是否存在?
当我在01.01.2000系统获得当天的UTC时间时,系统应记住莫斯科时区的时间为+3 UTC.(在夏天+4)那一刻.
对于2012年1月1日,我们在冬季和夏季都有+4 UTC.很快我们将有+3 UTC.
简单的测试表明,.NET不会保留有关更改的记录:
var t = new DateTime(2012,1,1);
// UTC +4 expected
System.Console.WriteLine(t.ToLocalTime());
// UTC +4 expected
t = new DateTime(2012,06,1);
System.Console.WriteLine(t.ToLocalTime());
// UTC +3 expected
t = new DateTime(2000,1,1);
System.Console.WriteLine(t.ToLocalTime());
// UTC +4 expected
t = new DateTime(2000,6,1);
System.Console.WriteLine(t.ToLocalTime());
Run Code Online (Sandbox Code Playgroud)
是否存在一些额外的API来应对这个问题?
更新:
找到了类TimeZoneInfo和相关的AdjustmentRule类.留下来测试TimeZoneInfo.Local时区的自定义是否会影响DateTime API.
更新2:
似乎UTC偏移不会存储为历史记录,AdjustmentRule只会更改一年中的白天时间.