Asp.net core Newtonsoft JsonConvert日期时间格式为JavascriptSerializer

Asp.net core Newtonsoft JsonConvert日期时间格式为JavascriptSerializer,asp.net-core,.net-core,Asp.net Core,.net Core,我使用的是.NET Core,希望将日期序列化为与System.Web.Script.JavascriptSerializer相同的格式,但改用Newtonsoft jsonconverter(或者其他与.NET Core兼容的格式,因为JavascriptSerializer是.NET framework) 例如: DateTime result1; var dt1 = DateTime.TryParse("12.06.2012 10:34:00",CultureInfo.GetCulture

我使用的是.NET Core,希望将日期序列化为与System.Web.Script.JavascriptSerializer相同的格式,但改用Newtonsoft jsonconverter(或者其他与.NET Core兼容的格式,因为JavascriptSerializer是.NET framework)

例如:

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

这不会返回我需要的格式: “/日期(1249335477787)/”

我怎样才能与.NET Core进行这样的约会

感谢JSON.NET使用的序列化日期,大多数解析器和语言(包括JavaScript)都能正确理解它。在过去,已经使用了从
JavascriptSerializer
知道的格式。如果需要使用该格式,则可以通过进行配置

在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;
    });

但是,您需要一个对的引用。

如果您可以处理添加时区增量的操作,如
“\/Date(15604124104+0200)\/”
,那么方法是指定一个JsonSerializerSettings对象,在其中设置
设置。DateFormatHandling=DateFormatHandling.MicrosoftDateFormat
如果使用Kind=DateTimeKind.Utc序列化DateTime,则无法获得
+0200
。为什么要这样做?您可能应该修复使用该格式处理标准的任何代码。JSON中日期的实际标准是使用ISO8601。JavascriptSerializer已经过时好几年了。甚至ASP.NET Web API也使用Json.NET和ISO8601tanks@LasseVågsætherKarlsen。Kanavos:显然,我需要使用“旧”MicrosoftDateFormat来创建一个带有日期时间参数的新azure自动化作业。因此,我基本上掌握在MS期望的格式中。我不知道这是因为runbook基于powershell还是API的工作方式。@Morten_564834这就是问题所在。你想打哪种服务?谢谢,我会试试的。您知道新的Core 3.0序列化程序是否具有相同的选项吗?另外,我正在使用它来启动Azure自动化runbook作业,显然microsoft希望该格式是MicrosoftDateFormat(而不是ISO 8601)。所以我猜他们仍然在使用一个旧的标准:)@Morten_564834新的JSON序列化程序默认使用
O
格式。目前还不存在改变这一点的方法。因此,您将无法使用该序列化程序返回到
日期(时间戳)
格式。你确定Azure不只是支持接受ISO日期吗?这将是相当奇怪的想法,它将需要一些非常具体的.NET当时。好的,谢谢。是的,我尝试了o格式和s格式,尝试了硬编码格式等,看看它是否有后备格式。但似乎只有.NET是唯一的。但这也非常特定于参数输入,以适应powershell[datetime]参数。