2010-11-02 150 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

相關問題