我DateTime.ToLocalTime()用来将日期从UTC转换为当地时间.我的时区是GMT + 1(贝尔格莱德,布达佩斯,Lubjna ...),它在Windows设置(XP)中正确设置.
上周末在我们的时区,我们改为冬季到夏季时间,这意味着,我们将当地时间缩短了一个小时.
正如我看到ToLocalTime方法从那一刻起表现得很奇怪.当我用它来转换这个冬天时间变化之后的日期时,效果很好,如下所示:
var utcDate2 = new DateTime(2011, 11, 2, 9, 0, 0,DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
utcDate1.ToLocalTime()价值是:2011.11.02. 10:00:00它是正确的
如果我想在此更改之前转换日期(例如夏令时的日期),它会返回一个错误的值,如下所示:
var utcDate1 = new DateTime(2011, 10, 23, 9, 0, 0,DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
utcDate2.ToLocalTime()价值是:2011.10.23. 10:00:00它是不正确的应该是2011.10.23.11:00:00
我该怎么做才能获得正确的价值观?我应该如何使用ToLocalTime来调整冬季/夏季时间?
http://msdn.microsoft.com/en-us/library/system.datetime.tolocaltime.aspx
在Windows XP系统上,ToLocalTime方法仅在从UTC转换为本地时将识别当前调整规则.因此,在当前调整规则生效之前的时段的转换可能无法准确反映UTC与本地时间之间的差异.
所以你必须找到另一种解决方法.
| 归档时间: |
|
| 查看次数: |
11980 次 |
| 最近记录: |