2010-11-02 116 views
1

我有一段代码检查时间,然后根据夏令时值添加小时。为什么IsDaylightSavingTime返回不同​​的值?

Dim CommentDateTime as Date = "11/2/2010 8:21:42 PM" 
If CommentDateTime.IsDaylightSavingTime Then 
    'do something 
Else 
    'do something else 
End If 

说我有问题是,IsDaylightSavingTime行为不同的生产服务器比它的开发上。

在开发服务器上的情况是TRUE,但在生产上它是错误的。

两个服务器运行相同的操作系统和均运行.NET 3.5

我可以给SA哪些信息来帮助解决我的问题?

UPDATE:

生产服务器是在美国亚利桑那州,不遵守DST的状态。我只关心在美国其他地区观察它是否有某个日期/时间是DST。

以下是我固定的问题:

If TimeZoneInfo.FindSystemTimeZoneById("Pacific StandardTime").IsDaylightSavingTime(CommentDateTime) Then 
    'Do something 
Else 
    'Do something else 
End If 

我的应用程序只与位于美国的地点交易,所以这应该做的伎俩。

+2

这听起来好像不是一个编码问题,但是你的TimeZone设置在不同的机器上是不同的。你可能想在ServerFault上询问这个问题(并且总结一下代码在那里做什么而不是在那里发布)。 – 2010-11-02 21:55:15

+0

阅读有关如何转换为协调世界时(UTC)的文章http://msdn.microsoft.com/en-us/library/bb397769%28VS.90%29.aspx以及如何处理夏令时时间问题http://msdn.microsoft.com/en-us/library/ms973825.aspx#datetime_topic6 – 2010-11-02 22:06:43

+0

@Tim - 感谢您的建议。这实际上是我已经在做的事情,并且我已经在我测试的所有服务器上正常工作,直到我将代码移至AZ中的生产服务器。 AZ不遵守DST,因此无论我放入什么日期,IsDaylightSavingTime都将始终返回false。 – zeroef 2010-11-03 16:13:53

回答

2

夏令时基于服务器的区域设置进行计算。你的开发箱可能有不同的区域设置到你的生产箱。

+1

@OJ我不认为IsDaylightSavingTime只会查看服务器上的时区。谢谢 – zeroef 2010-11-03 16:14:22

+0

不客气:) – 2010-11-03 21:33:56

1

希望这将工作:

Dim CommentDateTime as Date = "11/2/2010 8:21:42 PM" TimeZone.CurrentTimeZone.IsDaylightSavingTime(CommentDateTime)

祝您好运!

+0

这是接近我的想法将解决我的问题。 – zeroef 2010-11-03 16:16:08

+0

@Zeroef,先试试。如果有效,您可以将其标记为答案,以便其他用户也可以提供帮助。谢谢 – Saiful 2010-11-03 22:02:48

+0

我希望我可以标记你的答案和@OJ的答案了。我最终选择其他答案的原因是因为这是问题的根源。当我在我的代码中有“CommentDateTime.IsDaylightSavingTime”时,它只是你的答案的一个快捷方式。但看到“CurrentTimeZone”让我意识到,加上@ OJ的回答,服务器使用本地时区进行IsDST检查。 – zeroef 2010-11-03 22:43:27

相关问题