2011-01-19 48 views
1

這裏是我使用xml-webinterface中的數據的問題。在使用.Net XML分析器時丟失時區信息

該接口提供我有很多數據塊的像正確的數據這一項:

<item> 
<date>2011-01-19T09:02:00+01:00</date> 
<open>46.625</open> 
<high>46.625</high> 
<low>46.62</low> 
<close>46.62</close> 
<volume>827</volume> 
<count>2</count> 
<type>TRADE</type> 
</item> 

在.NET XML的解碼器(System.XML.Serialisation.XmlSerializer)解析這個(根據我的XSD sceme)轉換爲包含「日期」屬性的對象。

在這裏被剪斷從XSD生成的代碼:

[System.CodeDom.Compiler.GeneratedCodeAttribute( 「XSD」, 「2.0.50727.3038」)] [System.SerializableAttribute()] [System.Diagnostics.DebuggerStepThroughAttribute()] [System.ComponentModel.DesignerCategoryAttribute( 「代碼」)] 公共部分類TimeseriesElement {

private System.DateTime dateField; 

    /// <remarks/> 
    public System.DateTime date { 
     get { 
      return this.dateField; 
     } 
     set { 
      this.dateField = value; 
     } 
    } 
} 

這裏有一個包含其他值的派生值。沒有什麼有趣的東西可以在這裏看到,我猜...對我來說問題在於關於時區的信息已經消失了。是的,時間戳已正確修改爲系統正在運行的當前活動時區。是的,只有當用戶位於不同於+1的時區時纔會發生此情況。

我不想那樣,最後並不總是。大多數情況下,我對此都很滿意,但有些情況下我不想更改時間戳並將其用於本地(+1)時區。遺憾的是,我放棄了時間戳發佈時間的信息(或者在解析生效後沒有找到方法來提取這些信息),所以我無法改變時間戳以使其再次適合我的需求。

任何想法?哦,還有一件事。更改xml不是一種選擇,所以我必須在我身邊處理這個問題。

編輯:錯別字&答案的評論

+1

您可以發佈您的代碼讀取XML的例子嗎? – 2011-01-19 12:07:20

+1

什麼是「.Net XML-Decoder」? – Andrey 2011-01-19 12:12:14

回答

4

試着改變你的.NET代碼來解析它作爲一個的DateTimeOffset而不是一個DateTime:

private System.DateTimeOffset dateField; 

/// <remarks/> 
public System.DateTimeOffset date { 
    get { 
     return this.dateField; 
    } 
    set { 
     this.dateField = value; 
    } 
} 

的的DateTimeOffset結構應該保留原始的偏移時間。

感謝, 標記