我将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
}
发布于 2017-03-30 07:26:58
假设您有这个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转换为UTC(详细信息请参见/a/23502790 ):
View (JS)
var date = new Date("3/20/2017").toISOString();
控制器
test.Date = DateTime.Parse(date);
https://stackoverflow.com/questions/43110039
复制相似问题