我正在使用带有XSD元素的XML Web服务,例如:
<xs:element nillable="true" type="xs:dateTime" name="ENDDATE"/>
XML可能如下所示:
<ENDDATE>2016-08-01T18:35:49+04:00</ENDDATE>
我使用XSD.exe自动生成C#类,当我检查这些时,DateTime
对象将包含系统本地时间的时间,Kind==Local
。
有没有办法可以强制DateTime实例处于UTC时间而无需手动攻击每个这样的字段的自动生成的类(相当多)?
答案 0 :(得分:1)
我认为您无法使用XSD调整此行为(请参阅here)。 因此,您应该更新(破解)自动生成的类,并执行类似描述there:
的操作[XmlIgnore()]
public DateTime Time { get; set; }
[XmlElement(ElementName = "Time")]
public string XmlTime
{
get { return XmlConvert.ToString(Time, XmlDateTimeSerializationMode.RoundtripKind); }
set { Time = DateTimeOffset.Parse(value).DateTime; }
}
或者,如果你经常自动生成这些类,你可以为它们引入包装器,它们会透明地将DateTime转换为UTC。