.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"));
        }
    }
}

然后在 StartUp 中添加进 JsonOptions

            services.AddControllers(opt =>
            {
                opt.InputFormatters.Add(new TextPlainInputFormatter());
            }).AddJsonOptions(opt =>
            {
                opt.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All);
                opt.JsonSerializerOptions.Converters.Add(new JsonDateTimeConvert());

            }).SetCompatibilityVersion(CompatibilityVersion.Version_3_0);

 

因为自己做边界测试发现的这个问题,所以也没有全面测试过是否存在其他问题,如果有发现请留言,感谢。

相关文章:

  • 2022-02-07
  • 2022-12-23
  • 2022-02-24
  • 2021-09-27
  • 2022-12-23
  • 2022-12-23
  • 2021-10-25
  • 2021-11-23
猜你喜欢
  • 2022-01-27
  • 2022-12-23
  • 2022-01-10
  • 2022-02-25
  • 2022-02-14
  • 2022-12-23
  • 2021-04-25
相关资源
相似解决方案