【问题标题】:How to force ISO format "YYYY-MM-DDThh:mm:ss.sss" on the JSON output?如何在 JSON 输出上强制 ISO 格式“YYYY-MM-DDThh:mm:ss.sss”?
【发布时间】:2015-08-13 11:34:18
【问题描述】:

我有一个 ASP .NET WebApi2 api,它以 JSON 格式返回一些时间戳。时间戳的分辨率为毫秒。

通常我得到这种格式的时间戳,这很好"YYYY-MM-DDThh:mm:ss.sss"

不幸的是,如果时间戳恰好将日期编码为整秒,则输出格式为"YYYY-MM-DDThh:mm:ss"(请注意缺少的.sss")

如何始终在 JSON 输出上强制 ISO 格式 "YYYY-MM-DDThh:mm:ss.sss"

【问题讨论】:

  • 您是否已经覆盖了任何默认序列化行为,因为我读到它会以“Z”或时区结尾:asp.net/web-api/overview/formats-and-model-binding/…
  • 还没有......我正在使用框架附带的香草jsonizer
  • 您是在明确使用某些东西还是只是让 web api 框架进行序列化?
  • 我让框架序列化我的对象。 “魔法”发生在 Ok(myStuffToBeReturned);方法

标签: c# json datetime asp.net-web-api2 date-format


【解决方案1】:

将此行添加到WebApiConfig.Register

public static class WebApiConfig
{
    public static void Register(HttpConfiguration config)
    {
       // existing stuff

       config.Formatters
            .JsonFormatter
            .SerializerSettings
            .DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ss.fffK";
    }
}

默认格式为"yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK",最多允许 6 dp。我猜是小写的f,它似乎可以工作。

注意K 是时区(或 Z 代表 UTC),对于未知日期类型它也显示空白,这就是为什么你没有任何显示在那里的原因。

【讨论】:

  • @GianlucaGhettini 我从 "yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK" 更改为 "yyyy'-'MM'-'dd' T'HH':'mm':'ss.FFFFFFFZ" ,以及将日期时间转换为本地日期时间的浏览器问题已解决。谢谢。
猜你喜欢
  • 2020-07-09
  • 2021-03-15
  • 2015-07-04
  • 2013-09-21
  • 1970-01-01
  • 2018-03-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多