当前位置: 首页 > 科技观察

如何在ASP.NETCore中使用内置Json格式化日期?

时间:2023-03-15 10:51:38 科技观察

本文转载自微信公众号《NET技术问答》,作者:Stackoverflow。转载本文请联系NET技术问答公众号。咨询区D.英文:最近准备将一个Asp.NetCoreWebAPI项目从2.2升级到3.0。在新版本中,我计划使用System.Text.Json来替换Newtonsoft格式化日期。我原来的格式化方法如下:'MM'-'dd'T'HH':'mm':'ssZ";});}如何使用新的System.Text.Json进行等效替换?答案区D.英文:可以自定义一个formatter来解决,参考下面的代码:;returnDateTime.Parse(reader.GetString());}publicoverrideTimefrivoidWrite,Uter(JsonSerializerOptionsoptions){writer.WriteStringValue(value.ToUniversalTime().ToString("yyyy'-'MM'-'dd'T'HH':'mm':'ssZ"));}}然后在ConfigureServices()全局注册即可,如下代码所示:publicvoidConfigureServices(IServiceCollectionservices){services.AddControllers().AddJsonOptions(options=>{options.JsonSerializerOptions.Converters.Add(newDateTimeConverter());});}评论区这么巧前几天被前端用了小妹抱怨,问能不能在界面格式化日期...??????{"code":1,"isSucc":true,"data":{"id":1,"userType":"临时人员","userName":"xxx","companyName":"xxx","telphone":"xxxx","isAuthorize":false,"createTime":"2021-04-13T22:01:05.7705233+08:00",}}说实话这个createTime让我不舒服?????对了,项目是.NET5开发的,默认格式是System.Text.JsonTransformation...那怎么修改成通用的yyyy-MM-ddHH:mm:ss呢?方法和D.English大致相同,自定义一个DateTimeConverter即可。publicclassDateTimeConverter:JsonConverter{publicoverrideDateTimeRead(refUtf8JsonReaderreader,TypetypeToConvert,JsonSerializerOptionsoptions){returnDateTime.Parse(reader.GetString());}publicoverridevoidWrite(Utf8JsonWriterwriter,DateTimevalue,JsonSerializerOptionsoptions){writer.WriteStringValue(MM-yToyString(值.yToyString)ddHH:mm:ss"));}}修改后倒入IServiceCollection,界面输出就完美了~~~{"code":1,"isSucc":true,"data":{"id":1,"userType":"临时工","userName":"xxx","companyName":"xxx","电话":"xxxx","createTime":"2021-04-1322:08:28"}}结论是女孩子让人进步