我正在使用Angular资源以JSON格式将数据发布到我的Web API控制器。帖子包含一个日期字段,我在其中传递ISO,UTC格式的日期值,如下所示:
2016-05-01T07:00:00.000Z
但是当我检查对象到达我的Web API控制器时,日期值将转换为不正确的DateTime
值:
5/1/2016 7:00:00 AM
应该是:
5/1/2016 12:00:00 AM
如果我错了,请纠正我,但我认为值应为此,因为如果我执行语句DateTime.Parse("2016-05-01T07:00:00.000Z");
,我会得到以下值:5/1/2016 12:00:00 AM
我已阅读互联网上的各种帖子,包括SO,但未能找到以ISO格式发布日期的解决方案,并让它们成功转换为正确的DateTime值。
我尝试了什么:
我尝试过在WebApiConfig.cs
文件中添加以下设置等各种内容:
config.Formatters.JsonFormatter.SerializerSettings.Converters.Add(new IsoDateTimeConverter());
config.Formatters.JsonFormatter.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc;
我还尝试通过在WebApiConfig.cs
文件中添加以下行来概述here:
config.Formatters.JsonFormatter.SerializerSettings.Culture = System.Globalization.CultureInfo.CurrentCulture;
这一行到我的Web.config:
<globalization enableClientBasedCulture="false" requestEncoding="utf-8" responseEncoding="utf-8" culture="en-US" uiCulture="en-US"/>
我知道我可以将保存DateTime值的属性更改为字符串,并使用DateTime.Parse(dateTimeString)
方法从ISO日期值生成DateTime值,但我想避免在我的所有内容中执行此操作在我的模型中指定许多日期时间对象的应用程序。
SO上的大多数帖子都必须处理DateTime
对象的响应格式不正确,但我在发送请求时找不到问题的答案。