【问题标题】:ASP.NET WebAPI XmlFormatter Missing UTC Offset for DatesASP.NET WebAPI XmlFormatter 缺少日期的 UTC 偏移量
【发布时间】:2012-11-01 20:49:55
【问题描述】:

我有一个 ASP.NET WebAPI 实现,我允许客户端使用和请求 HTTP 响应的 XML 或 JSON 格式。一些响应对象包括日期/时间值。通过使用如下代码,我已成功获得 JSON 响应以包含正确的 ISO 8601 格式日期(包括 UTC 时间偏移):

Dim json As JsonMediaTypeFormatter = _
  GlobalConfiguration.Configuration.Formatters.JsonFormatter
json.SerializerSettings.DateFormatHandling = _
  Newtonsoft.Json.DateFormatHandling.IsoDateFormat
json.SerializerSettings.DateTimeZoneHandling = _
  Newtonsoft.Json.DateTimeZoneHandling.Local

JsonFormatter 现在给了我这样的日期:

2008-11-03T14:14:00-05:00

但是,XmlFormatter 给了我这样的日期:

2008-11-03T14:14:00

请注意缺少的 UTC 时间偏移量(“-05:00”)。如何让 XMLFormatter 给我 UTC 时间偏移量?

【问题讨论】:

    标签: asp.net xml xml-serialization asp.net-web-api timezone-offset


    【解决方案1】:

    我相信我只是自己想通了。

    从 SQL Server 数据库(使用 IDataReader)和企业库数据块读取日期时,我需要使用 Date.SpecifyKind 方法来判断从数据库中检索的日期类型。

    Dim dateCreated As Date = _
      Date.SpecifyKind(CDate(dbReader("DateCreated")), DateTimeKind.Local)
    

    通过这样做,我还能够删除原始问题中指定的 JsonMediaTypeFormatter 行。所以,现在 XML 和 JSON 都将日期发送为:

    2008-11-03T14:14:00-05:00
    

    更多关于 Date.SpecifyKind 的信息可以在这里找到: http://msdn.microsoft.com/en-us/library/bb546101.aspx

    【讨论】:

      猜你喜欢
      • 2014-02-04
      • 1970-01-01
      • 1970-01-01
      • 2012-08-02
      • 2020-04-22
      • 2021-06-11
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多