【发布时间】:2015-12-19 11:52:38
【问题描述】:
我有一个 azure Web 服务,可以将 XML 文件传送给许多客户。
用户将一个 XML 文件发送到 Web 服务,它会将 XML 反序列化为 Object,然后将其序列化为客户所需的 XML 格式。
我遇到了一个奇怪的情况,发送到 Web 服务的 XML 文件中有两种不同的 DateTime 格式,在这种情况下,输出的 XML 文件中的 DateTimes 是不正确的。但是,如果我在两个单独的文件中提供两个 DateTimes,则两者都被正确解析。
这是两个日期时间:
日期="2015-09-23T14:30:00+01:00"
日期="2015-09-23T14:30:00"
当在一个文件中解析时,它们都解析为 14:30,这是正确的,但是当两种格式都在文件中时,第二个 DateTime 解析为 15:30 和第一个 14:30。
我已尝试分配 CultureInfo,设置为当地时间。
我正在使用XmlSerializer Class 和XmlSerializer.Deserialize Method 将发送到Web 服务的XML 文件读取到我创建的对象中。
然后我有一个简单的映射器,它将值写入 XML 并更改一些属性和节点名称。将 DateTime 写入字符串的代码是:
xmlWriter.WriteAttributeString("startdatetime", dateTime.ToString("s"))
真正让我震惊的是,当它们位于单独的文件中时,这一切都有效,但当它位于具有两种单独的 DateTime 格式的文件中时,这一切都有效。
【问题讨论】:
-
您确实应该在您的解决方案中使用通用的 UTC 时间格式吗?
-
是的,我应该这样做,但我的经理目前不会同意这样做。
-
当您将属性从
DateTime更改为DateTimeOffset时会发生什么? -
如果你把它解析为
DateTimeOffset,然后像这样序列化它:dto.DateTime.ToString("s")- 你应该得到正确的结果。 -
预期输出是什么?