1

编辑:已解决,重复: 防止对 DateTime 值的反序列化进行时区转换


我在尝试反序列化 2000 年 9 月 30 日时遇到了一个奇怪的错误。

2000-09-30T00:00:00+11:00 将日期变为 29/09/2000 11:00:00 PM。

如何防止它在转换中损失一天:

public class Data
{
[XmlArray("Times")]
[XmlArrayItem("Time")]
public List<DateTime> Times { get; set; }

 public void Test()
 {
    XmlReader xr = XmlReader.Create(new StringReader(@"<Data><Times><Time>2000-09-30T00:00:00+11:00</Time><Time>1900-01-01T06:00:00</Time></Times></Data>"));
    XmlSerializer ser = new XmlSerializer(typeof(Data));
    Data data = (Data)ser.Deserialize(xr);
    // hover over data and see date is the 29th
 }
}
4

1 回答 1

2

此日期的 XML 表示适用于 UTC +11 时区,请参阅http://www.timeanddate.com/time/map/

因此,当 UTC +11 时区 30 日午夜 12 点时,悉尼 29 日晚上 11 点 (UTC + 10) :-)

于 2012-09-27T06:52:17.723 回答