我将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
}
答案 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);