问题简介: 返回DateTime,前端接收到的字符有时候为2018-01-01T12:01:01,有时候为2018-01-01T01:01:01.722+08:00,无法正常解析
原因:
WebApi的Json解析采用的是NewtonSoft的Json.net类库,其格式化日期默认采用的是ISO-8601 格式,该标准规定,日期后面加具体时间必须带上字符“T”,最后的+08:00代表东八区。因此, DateTime.Now会被格式化成成2018-01-01T01:01:01.722+08:00。
我们用Reflector反编译代码,搜索类JsonSerializer看看,可以发现默认日期格式为"yyyy'-'MM'-'dd'T'HH':'mm':'ss.FFFFFFFK"。
解决方法:1、依旧返回默认格式,前端按此种格式解析日期2、如果应用程序不涉及到跨时区,后端可以全局修改日期的返回格式,比如可以修改为"2018-01-01 12:01:01".net core处理方法:
.net framework(4.5.2为例)
3、后端局部修改返回格式,可以用比较丑陋的方式,先格式化为字符串,再转回到DateTime处理如: timeTest.Dt1 = DateTime.Parse(timeTest.Dt1.ToString("yyyy-MM-dd HH:mm:ss"));