Newtonsoft JsonConvert datetime格式为JavascriptSerializer

时间:2019-06-11 08:08:27

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

我正在使用.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获取这样的日期

谢谢

1 个答案:

答案 0 :(得分:1)

序列化JSON.NET使用的日期的default formatISO 8601,大多数解析器和语言(包括JavaScript)都可以正确理解。过去,使用的是JavascriptSerializer格式。如果需要使用该格式,则可以通过DateFormatHandling configuration进行配置。

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

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