Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Datetime TimeZoneInfo.ConvertTime出现问题:缺少夏令时开关_Datetime_.net 3.5 - Fatal编程技术网

Datetime TimeZoneInfo.ConvertTime出现问题:缺少夏令时开关

Datetime TimeZoneInfo.ConvertTime出现问题:缺少夏令时开关,datetime,.net-3.5,Datetime,.net 3.5,我的web应用程序在.Net 3.5上运行,所有日期都以UTC时间(而不是用户时间)保存在数据库中 当我想显示日期时,我将其转换为用户日期(从UTC) 到目前为止,它运行良好,但我有来自以色列(GMT+2)的用户,以色列在2010年3月26日切换到夏令时,所以现在是(GMT+3) 出于某种原因,TimeZoneInfo.ConvertTime不知道夏令时开关处于10年3月26日的开启状态,因此它仍然会转换为GMT+2 奇怪的是,在localhost上工作正常,我设置了一个测试页面: DateT

我的web应用程序在.Net 3.5上运行,所有日期都以UTC时间(而不是用户时间)保存在数据库中

当我想显示日期时,我将其转换为用户日期(从UTC)

到目前为止,它运行良好,但我有来自以色列(GMT+2)的用户,以色列在2010年3月26日切换到夏令时,所以现在是(GMT+3)

出于某种原因,TimeZoneInfo.ConvertTime不知道夏令时开关处于10年3月26日的开启状态,因此它仍然会转换为GMT+2

奇怪的是,在localhost上工作正常,我设置了一个测试页面:

 DateTime userdate = GetUserDateTime(DateTime.UtcNow);
string str2 = "UserDateTime  = " + userdate.ToString("dd/MM/yy") + "  " + userdate.ToString("HH:mm");
在服务器上(windows 2003设置为UTC时间),它显示错误的时间(+2):

UserDateTime=27/03/10 21:38

在本地主机(windows XP设置为以色列时间)上,它显示正确的时间(+3):

UserDateTime=27/03/10 22:38

如何更新以色列夏令时开关位于2010年3月26日的时区信息


谢谢。

以色列很重要。我在某个地方读到,DST的开始和结束日期是每年确定的,通常是在议会进行了一场漫长而激烈的辩论之后。要求Microsoft发布Windows更新,以便更新注册表

这是在这台机器上做的吗


相关注册表项为HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones\Israel Standard Time\Dynamic DST。我有一个巨大的日期列表。这是一个Vista+Win7功能,不确定XP上会发生什么。更新可能需要处理它。在superuser.com上询问更多关于它的问题

以色列的DaylightSave日期现在每年都是一样的。XP需要KB补丁来处理以色列问题,但Vista和7在这方面应该没问题。s

还有其他国家存在同样的问题吗?嗯,在某些地方总是有问题。DST时间是政治决定,不经常受到地球绕太阳运动的影响。
 DateTime userdate = GetUserDateTime(DateTime.UtcNow);
string str2 = "UserDateTime  = " + userdate.ToString("dd/MM/yy") + "  " + userdate.ToString("HH:mm");