DateTime.ToLocalTime()在冬季/夏季时间

Tom*_*Tom 8 .net c# datetime

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来调整冬季/夏季时间?

Joh*_*ski 6

http://msdn.microsoft.com/en-us/library/system.datetime.tolocaltime.aspx

在Windows XP系统上,ToLocalTime方法仅在从UTC转换为本地时将识别当前调整规则.因此,在当前调整规则生效之前的时段的转换可能无法准确反映UTC与本地时间之间的差异.

所以你必须找到另一种解决方法.

  • 对我来说这是一个非常悲伤的消息:( (4认同)