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 去了哪里?

.Net Core 3.0 中的 BrowserLink

在Asp.Net Core 3.0中如何使用 Newtonsoft.Json 库序列化数据

Linq 查询在 ASP.NET-Core 3.0 及更高版本中对数字等字符串进行排序

将 webpack 构建与 ASP.NET Core 3.0 集成的最佳方式?

使用dotnet-dump 查找 .net core 3.0 占用CPU 100%的原因