解析收到的JSON日期时,格式控制器将采用哪种格式?

时间:2017-03-30 06:23:01

标签: c# asp.net-mvc

我将JSON数据发布到我的控制器。其中一个字段包含日期。当我以MM / dd / yyyy格式发送日期时,控制器采用dd / MM / yyyy格式。由于这个原因,我的月份正在成为服务器端的一天。如果我发送3/20/2017然后它在服务器端变为01/01/0001,因为20不是有效的月份。我如何强制控制器以MM / dd / yyyy格式拍摄3/20/2017。我最初虽然iis是指我的系统时间格式。但即使我将系统日期格式更改为MM / dd / yyyy后它也无效。

我发送给服务器的示例JSON。请求类型为 POST 。 (这里我只发布日期字段,但在我的实际请求中我也有其他字段。)

{date:"3/20/2017"}

型号:

Test{
public DateTime Date{get;set;}
}

动作:

ActionResult Demo(Test test)
{
//some code
}

1 个答案:

答案 0 :(得分:1)

假设你有这个AJAX调用:

var date = "3/20/2017";
...
$.ajax({
        ...
        url: '/Controller/Demo',
        type: 'POST',
        data: { date: date },
        dataType: 'json',
        ...
       });

在控制器端,使用DateTime.ParseExact将日期转换为DateTime格式:

[HttpPost]
public ActionResult Demo(String date)
{
    // other stuff
    ...
    var test = new Test();
    test.Date = DateTime.ParseExact(date, "M/d/yyyy", CultureInfo.InvariantCulture);
    ...
    // other stuff
}

为防止日期格式化问题,建议使用toISOString()方法转换为UTC(有关详细信息,请参阅/a/23502790):

查看(JS)

var date = new Date("3/20/2017").toISOString();

<强>控制器

test.Date = DateTime.Parse(date);