相关疑难解决方法(0)

.NET是否具有时区更改的历史记录?

我们的政府喜欢改变当地时间或启用夏令时.

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只会更改一年中的白天时间.

.net timezone datetime

18
推荐指数
1
解决办法
1680
查看次数

标签 统计

.net ×1

datetime ×1

timezone ×1