这是我使用来自xml-webinterface的数据的问题。
界面为我提供了正确的数据,包含大量的数据块,如下所示:
<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-Decoder(System.XML.Serialisation.XmlSerializer)将此(根据我的xsd sceme)解析为包含“date”属性的对象。
这是从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不是一个选项,所以我必须在我身边处理这个问题。
编辑:拼写错误&amp;评论的答案
答案 0 :(得分:4)
尝试更改.NET代码以将其解析为DateTimeOffset而不是DateTime:
private System.DateTimeOffset dateField;
/// <remarks/>
public System.DateTimeOffset date {
get {
return this.dateField;
}
set {
this.dateField = value;
}
}
DateTimeOffset结构应该保留原始时间的偏移量。
感谢, 标记