.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);
因為自己做邊界測試發現的這個問題,所以也沒有全面測試過是否存在其他問題,如果有發現請留言,感謝。
