zoukankan      html  css  js  c++  java
  • .Net Core WebApi返回日期格式的问题

    环境:.net core 2.1 webapi


    问题简介: 返回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"));

    参考资料:
    https://blog.gisspan.com/2016/10/Everything-you-need-to-know-about-dates.html
    https://stackoverflow.com/questions/16697346/datetime-json-return-from-webapi-with-default-serializer
    https://baike.baidu.com/item/ISO%208601/3910715?fr=aladdin

  • 相关阅读:
    学习小结(8)
    内置函数补充(zip map filter)
    网络编程(爬虫,接口和requests的模块应用)及网络测接口
    Selenium彩蛋篇-Css Selector使用方法
    Selenium彩蛋篇-Xpath使用方法
    Selenium-WebDriverApi接口详解
    Selenium-Switch与SelectApi接口详解
    Selenium-常问面试题
    下拉框处理(select)
    Selenium之前世今生
  • 原文地址:https://www.cnblogs.com/holdengong/p/9909770.html
Copyright © 2011-2022 走看看