.net – DateTime.Parse在XP vs Windows 7/8上有所不同
在XP和
Windows 7上执行以下操作会在.NET4与.NET2控制台应用程序中产生不同的结果:
Console.WriteLine(String.Format("DateTime.Parse on Client: {0}",DateTime.Parse("1998-10-31T00:00:00-04:00"))); .NET4 .NET2 为什么??!? 从字符串中删除TimeZone(-04:00)会导致.NET4下的XP和Windows 7上的值相同.当从字符串执行DateTime.Parse时,Windows XP似乎在.NET4下以不同的方式应用时区偏移量.有没有办法改变这种行为,以便它在.NET4下是一致的,无论操作系统如何(不涉及操纵发送到DateTime.Parse的字符串) 环境: 我已在使用.NET4的Windows 7计算机和使用.NET4.5的Windows 7计算机上确认了此行为 解决方法
计算历史日期的本地时间要求.NET了解在该日期期间生效的夏令时规则.这当然是一件非常棘手的事情,因为DST规则在各地和日期之间变化很大.
您的日期的UTC偏移为-4,使其位于美国东部时区附近.最相关的夏令时规则改变了2005年能源政策法案,该法案将DST从3月的第2个星期日到11月的第1个星期日生效,从2007年开始生效.因此了解当地时间1998年10月31日要求知道这项法律尚未生效. 这就是差异的来源. Windows Vista是第一个拥有这些DST更改数据库的Windows版本,.NET 4是第一个开始使用它的.NET版本. XP没有该数据库,因此.NET无法做任何事情,只是假设当前的DST规则生效. 这是您在与当地时间合作时需要处理的不可避免的损失.不要,使用UTC. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows – Vista上的Cisco VPN客户端 – 虚拟适配器
- 在Windows中运行/调试python程序的最简单的方法
- Windows Server x64中的进程管理内存泄漏?
- .net – windows 4.5 bootstrapper包在哪里?
- wpf – 将TextBlock绑定到Window的属性
- tfs – Microsoft Scrum Process Template 2.1 vs 2.2
- windows-7 – 哪里可以下载适用于Windows 7的最新64位版Son
- Citrix XenApp工作原理
- 在没有安装CD的Win Server 2003上安装IIS?
- MFC扩展DLL