2010-03-30 41 views
0

在Microsoft.NET 2.0中有一個小腳本,它將XML反序列化爲類型化對象,使用ServiceDescription將它們連接到Web服務並將反序列化的類型化對象綁定到WebMethod入站。前序列化XML看起來像下面XmlSerializer.Deserialize方法將時區附加到時間和日期時間字段

傳送給Web服務時
<completion_time>12:19:38</completion_time> 

在電線上看起來像下面

<completion_time>12:19:38.0000000-04:00</completion_time> 

與追加到末尾時區。與不同時區的Web服務通信時,這會導致讀取時間不同。無論如何,讓XmlSerializer跳過時區?還是其他已知的解決方法?

+3

標記您的ansers是正確的,我認爲脂肪酶會幫助你! – 2010-03-30 21:27:40

+0

Ppl很有幫助,謝謝你的回覆,你現在可以解開你的內褲 – G33kKahuna 2010-03-30 21:56:58

+0

所以....這是答案,然後呢? – Beta033 2011-06-14 21:57:36

回答

0

您可以從日期時間改「completion_time」字段的類型爲字符串,並使用日期時間格式化器來獲得時間字符串無時區

日期時間日期= DateTime.UtcNow; date.ToString(「hh:mm:ss」);

1

遇到同樣的問題。最後在DataColumn對象上找到DateTimeMode屬性。它需要DataSetDateTime enumeration的成員來控制時間序列化的方式。將其設置爲Unspecified將阻止序列化程序進行任何時間轉換。

可以遍歷現有數據集,將模式類似如下:

 foreach (DataColumn column in table.Columns) { 
      if (column.DataType == typeof(DateTime)) { 
       column.DateTimeMode = DataSetDateTime.Unspecified; 
      } 
     } 
+0

這節省了我的培根,謝謝。我已經改變了類型到DateTimeKind.Unspecified的項目在數據行中,但是這似乎被DateTimeMode設置覆蓋。如果DateTimeMode設置爲未指定,那麼它會忽略數據行中項目的種類。 – PabloInNZ 2013-10-10 03:31:09

相關問題