[时区预备测试]

IRC_NewDev
hang 2024-02-20 09:41:01 +08:00
parent d3caa1dda9
commit 87a8d8d490
4 changed files with 38 additions and 10 deletions

View File

@ -109,7 +109,7 @@ builder.Services.AddControllers(options =>
} }
}) })
.AddNewtonsoftJsonSetup(); // NewtonsoftJson 序列化 处理 .AddNewtonsoftJsonSetup(builder.Services); // NewtonsoftJson 序列化 处理
builder.Services.AddOptions().Configure<SystemEmailSendConfig>(_configuration.GetSection("SystemEmailSendConfig")); builder.Services.AddOptions().Configure<SystemEmailSendConfig>(_configuration.GetSection("SystemEmailSendConfig"));
builder.Services.AddOptions().Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig")); builder.Services.AddOptions().Configure<ServiceVerifyConfigOption>(_configuration.GetSection("BasicSystemConfig"));

View File

@ -19,27 +19,51 @@ namespace IRaCIS.Core.API
_userInfo = userInfo; _userInfo = userInfo;
} }
private static readonly TimeZoneInfo ChinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai");
public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
{ {
throw new NotImplementedException();
if (reader.ValueType == typeof(DateTime))
{
DateTime dateTime = (DateTime)reader.Value;
var zoneTime = TimeZoneInfo.ConvertTime(dateTime, ChinaTimeZone);
return zoneTime;
}
else
{
return reader.Value;
}
} }
public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
{ {
var timeZoneId = _userInfo.TimeZoneId; var timeZoneId = _userInfo.TimeZoneId;
var needConvertUtcDateTime = Convert.ToDateTime(value); //var needConvertUtcDateTime = Convert.ToDateTime(value);
var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); //var tz = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
var dateTimeOffset = new DateTimeOffset(needConvertUtcDateTime); //var dateTimeOffset = new DateTimeOffset(needConvertUtcDateTime);
var time = TimeZoneInfo.ConvertTimeFromUtc(needConvertUtcDateTime, tz).ToString(_dateFormat); //var time = TimeZoneInfo.ConvertTimeFromUtc(needConvertUtcDateTime, tz).ToString(_dateFormat);
//writer.WriteValue(time);
//writer.Flush();
if (value is DateTime dateTime)
{
DateTime chinaTime = TimeZoneInfo.ConvertTime(dateTime, ChinaTimeZone);
writer.WriteValue(chinaTime);
}
writer.WriteValue(time);
writer.Flush();
} }
} }

View File

@ -8,8 +8,9 @@ namespace IRaCIS.Core.API
{ {
public static class NewtonsoftJsonSetup public static class NewtonsoftJsonSetup
{ {
public static void AddNewtonsoftJsonSetup(this IMvcBuilder builder) public static void AddNewtonsoftJsonSetup(this IMvcBuilder builder, IServiceCollection services)
{ {
services.AddScoped<DateTimeConverterBase, JSONCustomDateConverter>();
builder.AddNewtonsoftJson(options => builder.AddNewtonsoftJson(options =>
{ {
@ -24,6 +25,7 @@ namespace IRaCIS.Core.API
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss"; options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
//options.SerializerSettings.Converters.Add(new JSONCustomDateConverter()) ; //options.SerializerSettings.Converters.Add(new JSONCustomDateConverter()) ;
//options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService<JSONCustomDateConverter>());
//IsoDateTimeConverter //IsoDateTimeConverter
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore; //options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;

View File

@ -277,7 +277,9 @@ namespace IRaCIS.Core.Domain.Share
{ {
return timeZoneId.Value; return timeZoneId.Value;
} }
return "Asia/Shanghai";
return "Etc/UTC";
//return "Asia/Shanghai";
} }