Net core 2.x 升级 3.0 使用自带 System.Text.Json 时区 踩坑经历
Posted luciusliang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Net core 2.x 升级 3.0 使用自带 System.Text.Json 时区 踩坑经历相关的知识,希望对你有一定的参考价值。
.Net Core 3.0 更新的东西很多,这里就不多做解释了,官方和博园大佬写得很详细
关于 Net Core 时区问题,在 2.1 版本的时候,因为用的是 Newtonsoft.Json,配置比较方便
AddJsonOptions(opt => opt.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Local; )
但是用 System.Text.Json 就没那么方便了,翻了半天,只找到个 JsonConverts ,自己写了一个转换器去做转时区
using System.Text.Json.Serialization; using System.Text.Json; namespace LuciusLiang.Pwanshop.Api public class JsonDateTimeConvert : JsonConverter<DateTime> public override DateTime Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) var paramString = reader.GetString(); var localDateTime = Convert.ToDateTime(paramString); return localDateTime; public override void Write(Utf8JsonWriter writer, DateTime value, JsonSerializerOptions options) writer.WriteStringValue(value.ToString("yyyy-MM-dd HH:mm:ss"));
因为自己做边界测试发现的这个问题,所以也没有全面测试过是否存在其他问题,如果有发现请留言,感谢。
以上是关于Net core 2.x 升级 3.0 使用自带 System.Text.Json 时区 踩坑经历的主要内容,如果未能解决你的问题,请参考以下文章
.Net Core 3.0 中的 IMvcBuilder AddJsonOptions 去了哪里?
在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据
Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序