.Net Core NewtonsoftJson DateTimeZoneHandling 设置不起作用

.Net Core NewtonsoftJson DateTimeZoneHandling setting not working

我开始在工作中将我们的 .Net Framework WebAPI 移植到 .Net Core 5。我注意到 SPA 中返回的日期已关闭,经过进一步调查,我发现在对象被序列化后,日期被设置为 UTC。

我发现我可以通过添加选项作为参数让它在 serialization/deserialization 工作,但看起来这应该能够在全局范围内完成,而不是每次序列化程序运行时。

我尝试在 WebAPI Startup.cs 中添加以下内容来更改返回日期的方式,但它似乎在启动时不起作用:

services.AddControllers().AddNewtonsoftJson(o => o.SerializerSettings.DateTimeZoneHandling = Newtonsoft.Json.DateTimeZoneHandling.Unspecified);

添加这个:

services.AddControllers().AddNewtonsoftJson();

JsonConvert.DefaultSettings = () => new JsonSerializerSettings
{

    DateTimeZoneHandling = DateTimeZoneHandling.Unspecified
};

我必须转换为 UTC 格式(DateTimeZoneHandling.Utc),而上述方法 (DateTimeZoneHandling) 对我不起作用。终于在下面工作了:

.AddNewtonsoftJson(opts =>
            {    
                opts.SerializerSettings.Converters.Add(new IsoDateTimeConverter
                    {
                        DateTimeStyles = DateTimeStyles.AdjustToUniversal
                    });
            }

我希望这对希望在全球范围内将日期时间格式转换为 UTC 的人有所帮助。