2011-01-19 47 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结构应该保留原始的偏移时间。

感谢, 标记