反序列化期间的日期转换

时间:2018-01-27 03:14:28

标签: c# xml datetime deserialization

跟进我的上一个问题,我很好奇XmlSerializer如何转换DateTime

我的XML文件中有一个字段如下:

<date>2011-01-10T00:00:00-05:00</date>

我想将其反序列化为DateTime

这是EST的外观。但是,当我查看结果时,我得到一个看起来像2011-01-09 21:00:00的日期时间对象。这似乎转换为我当地时间(PST)。

  1. 为什么会这样?
  2. 如何在序列化期间保留XML中给出的实际日期?我希望在反序列化期间尽可能保持UTC。
  3. 谢谢!

    修改

    我无法控制服务器,也无法更改其格式。

1 个答案:

答案 0 :(得分:-1)

DateTime以当地时间显示值。从绝对时间读取时,它不支持保留时区。因此,您可以看到-05:00时区的ISO-8601格式值正确转换为您当地的时区。

序列化的唯一选项是UTC(Z时区)和本地,有关选择所需格式的方法,请参阅Force XmlSerializer to serialize DateTime as 'YYYY-MM-DD hh:mm:ss'

如果您需要保留时区,请查看某些外部库(例如NodaTime)是否支持它。