首页 > 解决方案 > Newtonsoft JsonConvert 日期时间格式为 JavascriptSerializer

问题描述

我正在使用 .NET Core 并希望将日期序列化为与 System.Web.Script.JavascriptSerializer 相同的格式,但改用 Newtonsoft jsonconverter(或其他与 .NET Core 兼容的东西,因为 JavascriptSerializer 是 .NET 框架)。

例子:

DateTime result1;
var dt1 = DateTime.TryParse("12.06.2012 10:34:00",CultureInfo.GetCultureInfo("DA-dk"), DateTimeStyles.None, out result1);

JsonConvert.Serialize(result1);

这不会返回我需要的这样的格式:“/Date(1249335477787)/”;

如何使用 .NET Core 获得这样的日期

谢谢

标签: asp.net-core.net-core

解决方案


JSON.NET 使用的序列化日期的默认格式ISO 8601,大多数解析器和语言(包括 JavaScript)都能正确理解。过去,您所知道的格式JavascriptSerializer已被使用。如果您需要使用该格式,则可以通过配置进行DateFormatHandling配置

在 ASP.NET Core 2.x 中,您可以ConfigureServices在 Startup 类的方法中这样配置它:

services.AddMvc().AddJsonOptions(options =>
{
    options.SerializerSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
});

从 ASP.NET Core 3.0 开始,默认使用不同的序列化程序,它没有此配置选项,但您也可以选择切换回 JSON.NET 并相应地配置它:

services.AddControllers()
    .AddNewtonsoftJson(options =>
    {
        options.SerializerSettings.DateFormatHandling = DateFormatHandling.MicrosoftDateFormat;
    });

不过,您将需要对Microsoft.AspNetCore.Mvc.NewtonsoftJson的引用。


推荐阅读