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

How to force ISO format "YYYY-MM-DDThh:mm:ss.sss" on the JSON output?

我有一个 ASP .NET WebApi2 api,其中 returns 一些 JSON 格式的时间戳。时间戳具有毫秒分辨率。

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

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

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

将此行添加到 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),对于未知日期类型它也显示空白,这就是为什么您没有显示任何内容的原因。