[时区预备测试]
This commit is contained in:
@@ -19,27 +19,51 @@ namespace IRaCIS.Core.API
|
||||
_userInfo = userInfo;
|
||||
}
|
||||
|
||||
private static readonly TimeZoneInfo ChinaTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Asia/Shanghai");
|
||||
|
||||
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)
|
||||
{
|
||||
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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -8,8 +8,9 @@ namespace IRaCIS.Core.API
|
||||
{
|
||||
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 =>
|
||||
{
|
||||
@@ -24,6 +25,7 @@ namespace IRaCIS.Core.API
|
||||
options.SerializerSettings.DateFormatString = "yyyy-MM-dd HH:mm:ss";
|
||||
|
||||
//options.SerializerSettings.Converters.Add(new JSONCustomDateConverter()) ;
|
||||
//options.SerializerSettings.Converters.Add(services.BuildServiceProvider().GetService<JSONCustomDateConverter>());
|
||||
|
||||
//IsoDateTimeConverter
|
||||
//options.SerializerSettings.NullValueHandling = NullValueHandling.Ignore;
|
||||
|
||||
Reference in New Issue
Block a user