如何配置 web api 的 json 序列化器将日期时间转换为 ISO 8601 格式?
Posted
技术标签:
【中文标题】如何配置 web api 的 json 序列化器将日期时间转换为 ISO 8601 格式?【英文标题】:How to configure web api's json serializer to convert date time into ISO 8601 format? 【发布时间】:2018-06-23 04:49:06 【问题描述】:我正在开发 web api 项目,在我的 WebApiConfig 类中,我添加了此配置以将日期时间参数转换为 ISO 8601 格式:
IsoDateTimeConverter converter = new IsoDateTimeConverter
//DateTimeStyles = DateTimeStyles.AdjustToUniversal,
DateTimeFormat = "yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'"
;
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(converter);
但是如果我从前端传入这个值 2018-01-21T21:00:00.000Z 它不会正确地将它转换成 2018-01-22 00:00 :00.000
那么,我的配置有什么问题?
【问题讨论】:
为什么会转换成那个日期?你传入一个带有时区(zulu,又名 UTC)的 DateTime 字符串。 【参考方案1】:不需要使用IsoDateTimeConverter
就可以了:
var strDate = Convert.ToDateTime("2018-01-21T21:00:00.000Z").ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fff'Z'", System.Globalization.CultureInfo.InvariantCulture);
它会给你2018-01-22T00:30:00.000Z
,因为我测试了你的字符串格式。
但您可以更改格式;ike "yyyy'-'MM'-'dd' 'HH':'mm':'ss"
【讨论】:
感谢回复,但我想全局配置json序列化器以上是关于如何配置 web api 的 json 序列化器将日期时间转换为 ISO 8601 格式?的主要内容,如果未能解决你的问题,请参考以下文章
如何手动反序列化 JSON 并像 Web API 那样自动验证模型?
编写一个包装器将现有的 REST API 公开为 SOAP Web 服务?
如何使用 django-rest-framework 中的序列化器将相似数据合并到自定义字段中?
如何在 ASP.NET Web API 中为 Json.NET 设置自定义 JsonSerializerSettings?