2

我有一个 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 时间偏移量?

4

1 回答 1

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

于 2012-11-02T14:45:45.053 回答