日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
如何在ASP.NETCore中使用內(nèi)置的Json格式化日期?

本文轉(zhuǎn)載自微信公眾號(hào)「NET技術(shù)問答」,作者Stackoverflow。轉(zhuǎn)載本文請(qǐng)聯(lián)系NET技術(shù)問答公眾號(hào)。 

咨詢區(qū)

D. English:

最近我正準(zhǔn)備把一個(gè) Asp.Net Core WebAPI 項(xiàng)目從 2.2 升級(jí)到 3.0,在新版本中我打算用 System.Text.Json 來替代 Newtonsoft 格式化日期,原來我的格式化寫法如下:

 
 
 
  1. public void ConfigureServices(IServiceCollection services) 
  2.         { 
  3.             services.AddControllers().AddJsonOptions(options => 
  4.             { 
  5.                 options.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Utc; 
  6.                 options.SerializerSettings.DateFormatString = "yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"; 
  7.             }); 
  8.         } 

請(qǐng)問我如何用新的 System.Text.Json 做等價(jià)替換呢?

回答區(qū)

D. English:

要想解決,可以自定義個(gè) formatter,參考如下代碼:

 
 
 
  1. public class DateTimeConverter : JsonConverter 
  2.     public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) 
  3.     { 
  4.         Debug.Assert(typeToConvert == typeof(DateTime)); 
  5.         return DateTime.Parse(reader.GetString()); 
  6.     } 
  7.  
  8.     public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) 
  9.     { 
  10.         writer.WriteStringValue(value.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ")); 
  11.     } 

然后在 ConfigureServices() 中做全局注冊(cè)就可以了,如下代碼所示:

 
 
 
  1. public void ConfigureServices(IServiceCollection services) 
  2.    { 
  3.        services.AddControllers() 
  4.            .AddJsonOptions(options => 
  5.            { 
  6.                options.JsonSerializerOptions.Converters.Add(new DateTimeConverter()); 
  7.            }); 
  8.    } 

點(diǎn)評(píng)區(qū)

真巧,前幾天被前端的小姑娘吐槽,說能不能把接口中的日期格式化一下... ??????

 
 
 
  1.   "code": 1, 
  2.   "isSucc": true, 
  3.   "data": { 
  4.     "id": 1, 
  5.     "userType": "臨時(shí)人員", 
  6.     "userName": "xxx", 
  7.     "companyName": "xxx", 
  8.     "telphone": "xxxx", 
  9.     "isAuthorize": false, 
  10.     "createTime": "2021-04-13T22:01:05.7705233+08:00", 
  11.   } 

說實(shí)話,這個(gè) createTime 我看者都不舒服??????,對(duì)了,項(xiàng)目是 .NET5 開發(fā)的,默認(rèn)用的就是 System.Text.Json 做的格式化... 那如何修正為普世的 yyyy-MM-dd HH:mm:ss 呢?

做法和 D. English 這位老哥大致一樣,自定義個(gè) DateTimeConverter 搞定。

 
 
 
  1. public class DateTimeConverter : JsonConverter 
  2.    { 
  3.        public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) 
  4.        { 
  5.            return DateTime.Parse(reader.GetString()); 
  6.        } 
  7.  
  8.        public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) 
  9.        { 
  10.            writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss")); 
  11.        } 
  12.    } 

改完之后灌入到 IServiceCollection ,接口輸出就完美了~~~

 
 
 
  1.   "code": 1, 
  2.   "isSucc": true, 
  3.   "data": { 
  4.     "id": 1, 
  5.     "userType": "臨時(shí)人員", 
  6.     "userName": "xxx", 
  7.     "companyName": "xxx", 
  8.     "telphone": "xxxx", 
  9.     "createTime": "2021-04-13 22:08:28" 
  10.   } 

結(jié)論就是妹子讓人進(jìn)步哈


網(wǎng)站名稱:如何在ASP.NETCore中使用內(nèi)置的Json格式化日期?
本文路徑:http://www.dlmjj.cn/article/dphpdpe.html