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;