From 1aa2614d26a1b16f0c5b727417a2a48c67807f9a Mon Sep 17 00:00:00 2001 From: zhoukeda <1315948824@qq.com> Date: Tue, 24 Oct 2023 11:33:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E7=9A=84=E6=97=B6=E9=97=B4=E4=B9=9F=E8=83=BD=E6=AD=A3=E7=A1=AE?= =?UTF-8?q?=E6=98=A0=E5=B0=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ConfigureMvcControllerExtensions.cs | 43 ++++++++++++++++++- 1 file changed, 41 insertions(+), 2 deletions(-) diff --git a/apihost/Tnb.API.Entry/Extensions/ConfigureMvcControllerExtensions.cs b/apihost/Tnb.API.Entry/Extensions/ConfigureMvcControllerExtensions.cs index f783c29d..4a984aa6 100644 --- a/apihost/Tnb.API.Entry/Extensions/ConfigureMvcControllerExtensions.cs +++ b/apihost/Tnb.API.Entry/Extensions/ConfigureMvcControllerExtensions.cs @@ -1,4 +1,5 @@ -using JNPF; +using System.Globalization; +using JNPF; using JNPF.Common.Core.Filter; using JNPF.Common.Options; using JNPF.EventHandler; @@ -48,7 +49,8 @@ public static class ConfigureMvcControllerExtensions options.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; // 格式化json输出的日期格式为时间戳 - options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter()); + // options.SerializerSettings.Converters.Add(new NewtonsoftDateTimeJsonConverter()); + options.SerializerSettings.Converters.Add(new MyNewtonsoftDateTimeJsonConverter());//zhoukeda 2023.10.24 }); services.AddUnifyJsonOptions("special", new JsonSerializerSettings @@ -123,4 +125,41 @@ public static class ConfigureMvcControllerExtensions return services; } + + public class MyNewtonsoftDateTimeJsonConverter : NewtonsoftDateTimeJsonConverter + { + public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) + { + bool flag = NewtonsoftDateTimeJsonConverter.IsNullable(objectType); + if (reader.TokenType == JsonToken.Null || string.IsNullOrEmpty(reader.Value.ToString())) + { + if (!flag) + throw new JsonSerializationException(string.Format((IFormatProvider) CultureInfo.InvariantCulture, "Cannot convert null value to {0}.", (object) objectType)); + return (object) null; + } + long result = 0; + if (reader.TokenType == JsonToken.Integer) + result = (long) reader.Value; + else if (reader.TokenType == JsonToken.String) + { + if (!long.TryParse((string) reader.Value, out result)) + return (object) Convert.ToDateTime(reader.Value.ToString()); + return reader.TokenType == JsonToken.Date ? reader.Value : throw new JsonSerializationException(string.Format((IFormatProvider) CultureInfo.InvariantCulture, "Unexpected token parsing date. Expected Integer or String, got {0}.", (object) reader.TokenType)); + } + if (result < 0L) + return (object) DateTime.Now; + try + { + DateTime dt = Convert.ToDateTime(reader.Value.ToString()); + return dt; + } + catch (Exception e) + { + DateTimeOffset dateTimeOffset = DateTimeOffset.FromUnixTimeMilliseconds(result); + dateTimeOffset = dateTimeOffset.ToLocalTime(); + DateTime dateTime = dateTimeOffset.DateTime; + return (flag ? Nullable.GetUnderlyingType(objectType) : objectType) == typeof (DateTimeOffset) ? (object) new DateTimeOffset(dateTime, TimeSpan.Zero) : (object) dateTime; + } + } + } } \ No newline at end of file