ソースを参照

swagger 时间格式化以及本地化

徐少年 1 年間 前
コミット
79a780e998
1 ファイル変更22 行追加3 行削除
  1. 22 3
      Admin.NET/Admin.NET.Web.Core/Startup.cs

+ 22 - 3
Admin.NET/Admin.NET.Web.Core/Startup.cs

@@ -22,11 +22,14 @@ using Microsoft.AspNetCore.ResponseCompression;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.DependencyInjection;
 using Microsoft.Extensions.Hosting;
 using Microsoft.Extensions.Hosting;
 using Newtonsoft.Json;
 using Newtonsoft.Json;
+using Newtonsoft.Json.Converters;
 using OnceMi.AspNetCore.OSS;
 using OnceMi.AspNetCore.OSS;
 using SixLabors.ImageSharp.Web.DependencyInjection;
 using SixLabors.ImageSharp.Web.DependencyInjection;
 using System;
 using System;
+using System.Globalization;
 using System.Linq;
 using System.Linq;
 using System.Text.Encodings.Web;
 using System.Text.Encodings.Web;
+using System.Text.Json;
 using System.Text.Unicode;
 using System.Text.Unicode;
 using System.Threading.Tasks;
 using System.Threading.Tasks;
 
 
@@ -84,7 +87,7 @@ public class Startup : AppStartup
         {
         {
             setting.DateFormatHandling = DateFormatHandling.IsoDateFormat;
             setting.DateFormatHandling = DateFormatHandling.IsoDateFormat;
             setting.DateTimeZoneHandling = DateTimeZoneHandling.Local;
             setting.DateTimeZoneHandling = DateTimeZoneHandling.Local;
-            // setting.Converters.AddDateTimeTypeConverters(localized: true); // 时间本地化
+            setting.Converters.AddDateTimeTypeConverters(localized: true); // 时间本地化
             setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; // 时间格式化
             setting.DateFormatString = "yyyy-MM-dd HH:mm:ss"; // 时间格式化
             setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; // 忽略循环引用
             setting.ReferenceLoopHandling = ReferenceLoopHandling.Ignore; // 忽略循环引用
             // setting.ContractResolver = new CamelCasePropertyNamesContractResolver(); // 解决动态对象属性名大写
             // setting.ContractResolver = new CamelCasePropertyNamesContractResolver(); // 解决动态对象属性名大写
@@ -92,8 +95,13 @@ public class Startup : AppStartup
             // setting.Converters.AddLongTypeConverters(); // long转string(防止js精度溢出) 超过17位开启
             // setting.Converters.AddLongTypeConverters(); // long转string(防止js精度溢出) 超过17位开启
             // setting.MetadataPropertyHandling = MetadataPropertyHandling.Ignore; // 解决DateTimeOffset异常
             // setting.MetadataPropertyHandling = MetadataPropertyHandling.Ignore; // 解决DateTimeOffset异常
             // setting.DateParseHandling = DateParseHandling.None; // 解决DateTimeOffset异常
             // setting.DateParseHandling = DateParseHandling.None; // 解决DateTimeOffset异常
-            // setting.Converters.Add(new IsoDateTimeConverter { DateTimeStyles = DateTimeStyles.AssumeUniversal }); // 解决DateTimeOffset异常
-        };
+            setting.Converters.Add(new IsoDateTimeConverter
+            {
+                DateTimeFormat = "yyyy-MM-dd HH:mm:ss", // 自定义日期时间格式
+                DateTimeStyles = DateTimeStyles.AssumeLocal | DateTimeStyles.AdjustToUniversal
+            }); // 解决DateTimeOffset异常
+        }
+        ;
 
 
         services.AddControllersWithViews()
         services.AddControllersWithViews()
             .AddAppLocalization()
             .AddAppLocalization()
@@ -104,6 +112,7 @@ public class Startup : AppStartup
             .AddJsonOptions(options =>
             .AddJsonOptions(options =>
             {
             {
                 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); // 禁止Unicode转码
                 options.JsonSerializerOptions.Encoder = JavaScriptEncoder.Create(UnicodeRanges.All); // 禁止Unicode转码
+                options.JsonSerializerOptions.Converters.AddDateTimeTypeConverters("yyyy-MM-dd HH:mm:ss",localized:true);
             });
             });
 
 
         // 三方授权登录OAuth
         // 三方授权登录OAuth
@@ -208,6 +217,16 @@ public class Startup : AppStartup
         // 控制台logo
         // 控制台logo
         services.AddConsoleLogo();
         services.AddConsoleLogo();
 
 
+        services.AddSwaggerGen(c =>
+        {
+            c.MapType<DateTime>(() => new Microsoft.OpenApi.Models.OpenApiSchema
+            {
+                Type = "string",
+                Format = "date-time",
+                Example = new Microsoft.OpenApi.Any.OpenApiString(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")) // 示例值
+            });
+        });
+
         // 将IP地址数据库文件完全加载到内存,提升查询速度(以空间换时间,内存将会增加60-70M)
         // 将IP地址数据库文件完全加载到内存,提升查询速度(以空间换时间,内存将会增加60-70M)
         IpToolSettings.LoadInternationalDbToMemory = true;
         IpToolSettings.LoadInternationalDbToMemory = true;
         // 设置默认查询器China和International
         // 设置默认查询器China和International