2012-11-16 43 views
1

我正在訪問.net中的Web服務,它將返回一個數據集。TimeZone轉換問題.Net數據集WebService

望着從web服務的XML它顯示如下

2012-11-16T00:00:00-05:00 

我的電腦時區爲GMT + 1,你可以看到從XML日期具有-5

我約會在VS2005中使用webreference,它給了我一個數據集。

當我看從數據集中的日期,它說這是05:00

我期待00:00價值,我不能確定轉換的正確方法。

我可以簡單地減去5小時,但不確定當夏令時再次發生變化時這種情況會持續。

我已經做了大量的搜索,並發現類似的問題,當使用datareader和如何解決它,但沒有人談論如何做時,它被序列化爲一個完整的數據集。

+0

當時區不同時,你爲什麼期待'00:00'?雖然我希望它是'06:00'而不是'05:00'。 – Oded

回答

2

該XML提供了本地值,即2012-11-16T05:00:00Z。這聽起來像是反序列化然後將其轉換爲UTC中的DateTime ...檢查DateTimeKind屬性...如果它是Utc那麼這一切都有意義,並且您正在獲得正確的時間用XML表示。

目前還不清楚你期待什麼,或者發佈什麼數據,或者你真正需要什麼價值。如果您可以將反序列化代碼更改爲使用DateTimeOffset而不是DateTime,則可以保留這兩條信息。

+0

我無法改變web服務上的任何東西。 -5是由於服務器的位置,那是GMT偏移量。我知道確切的日期,我顯示的XML應該是我的位置interpereted作爲00:00在我的時區,這是GMT + 1。我不知道如何去改變反序列化代碼,因爲它是由VisualStudio自動生成的...任何指針都會很好 – Dorf

+0

類型是datetime.unspecified – Dorf

+0

「我知道確切的日期,我表明XML應該是在我的時區,即格林威治標準時間+1時,由我的位置作爲00:00進行干預。「 - 爲什麼?怎麼樣?目前尚不清楚這些數據意味着什麼。這聽起來像Web服務*應該*只是提供本地價值。值*總是*是午夜?它只是代表一個日期嗎? –