From ca90736366547f458c2eacb6c1777f4de5ca4389 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 14 Mar 2024 13:48:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=97=B6=E5=8C=BA=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../NewtonsoftJson/JSONTimeZoneConverter.cs | 35 ++++++++++++------- .../NewtonsoftJson/NewtonsoftJsonSetup.cs | 4 +-- 2 files changed, 25 insertions(+), 14 deletions(-) diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs index af0b905b6..5e12ded31 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/JSONTimeZoneConverter.cs @@ -43,21 +43,32 @@ namespace IRaCIS.Core.API public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { - DateTime? nullableDateTime = reader.Value as DateTime?; - - if (nullableDateTime != null && nullableDateTime.HasValue) - { - var dateTime = (DateTime)reader.Value; - - // 将客户端时间转换为服务器时区的时间 - var serverZoneTime = TimeZoneInfo.ConvertTime(dateTime, _clientTimeZone, TimeZoneInfo.Local); - - return serverZoneTime; - } - else + if (reader.Value == null) { return null; } + + DateTime dateTime; + + if (reader.ValueType == typeof(string)) + { + if (DateTime.TryParse((string)reader.Value, out dateTime) == false) + { + throw new JsonSerializationException("Unable to parse DateTime value."); + } + } + else + { + dateTime = (DateTime)reader.Value; + } + + + // 将客户端时间转换为服务器时区的时间 + var serverZoneTime = TimeZoneInfo.ConvertTime(dateTime, _clientTimeZone, TimeZoneInfo.Local); + + return serverZoneTime; + + } diff --git a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs index 5a6d1eb30..c23963a5d 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/NewtonsoftJson/NewtonsoftJsonSetup.cs @@ -33,10 +33,10 @@ namespace IRaCIS.Core.API //options.SerializerSettings.Converters.Add(new JSONCustomDateConverter()) ; - //options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService()); + options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService()); //options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService()); - + //IsoDateTimeConverter //options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;