【问题标题】:DateTime Xml DeserializationDateTime Xml 反序列化
【发布时间】:2009-09-02 20:03:26
【问题描述】:

对不起,如果这个问题已经被打死了,但我似乎找不到我的问题的好答案。

我编写了一个使用 Web 服务的 .NET 2.0 客户端。我调用的 Web 方法以 UTC 格式返回多个 DateTime 值。

这些值似乎被反序列化为 DateTimeKind.Local。我假设这是 .NET SOAP 框架的默认行为。但是,我需要将值设为 DateTimeKind.Unspecified。

我有哪些选项可以覆盖这些 DateTime 值的反序列化?

【问题讨论】:

  • 日期序列化时,Date种类是DateTimeKind.Unspecified还是DateTimeKind.Local?
  • 我不知道。我没有创建网络服务。我需要改变它们的反序列化方式。

标签: .net xml soap


【解决方案1】:

这是我在 MSDN 上找到的:

使用 .NET Framework 版本时 1.0 和 1.1,不要发送代表 UCT 时间的 DateTime 值 System.XML.序列化。这去 用于日期、时间和日期时间值。 对于 Web 服务和其他形式的 序列化到 XML 涉及 System.DateTime,始终确保 DateTime 值中的值 表示当前机器本地时间。 串行器将正确解码 XML 架构定义的 DateTime 值 以 GMT 编码(偏移值 = 0), 但它会将其解码到本地 机器时间观点。

我不知道 .NET 2.0 是否仍然如此

This是文章的链接。

【讨论】:

    【解决方案2】:

    更新:

    DateTime 值 不是 像我想的那样以 UTC 格式发送。它们是带有时区偏移的当地时间。

    但是,我的问题仍然存在:我需要在没有时区偏移的情况下反序列化 DateTime 值。我想要他们当地时区的时间,而不是转换为我的时区。

    不过,我找到了解决方法。事实证明,编写一个 SoapExtension 后代来从所有 xs:dateTime 值中删除时区信息非常容易。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 1970-01-01
      相关资源
      最近更新 更多