我在我看来使用以下内容:
var myDate = $(inpDateCompleted).val();
alert(myDate)
var url = '@(Url.Action("HoursByDay", "DashBoard"))?dateCompleted=' + myDate;
alert(url)
两个警报都正确显示日期格式为01/11/2011(11月1日)。但是,一旦通过上面的url将日期传递到我的控制器事件中,则日期错误为11/01/2011(1月11日):
[HttpGet]
public ActionResult HoursByDay(DateTime dateCompleted)
{
var s = ExecuteSqlCommand2(dateCompleted);
return Content(s, "application/json");
}
产生的数据不正确。我怎么能纠正这个?
根据建议,我使用以下方式设置文化:
var localizationOptions = new RequestLocalizationOptions
{
// Set options here to change middleware behavior
SupportedCultures = new List<CultureInfo>
{
new CultureInfo("en-NZ"),
},
SupportedUICultures = new List<CultureInfo>
{
new CultureInfo("en-NZ"),
}
};
app.UseRequestLocalization(localizationOptions, defaultRequestCulture: new RequestCulture("en-NZ"));
答案 0 :(得分:0)
如果您知道日期字符串将始终采用dd/MM/yyyy
格式,则可以使用DateTime.TryParseExact
方法从字符串构建日期时间对象。将Action方法参数更改为字符串,并使用模式/格式解析此字符串。
[HttpGet]
public ActionResult HoursByDay(string dateCompleted)
{
DateTime parsedDate;
if(DateTime.TryParseExact(dateCompleted,"dd/MM/yyyy",CultureInfo.CurrentCulture,
DateTimeStyles.None,out parsedDate))
{
// parsedDate is a valid DateTime object now
var s = ExecuteSqlCommand2(parsedDate);
return Json(s);
}
else
{
// could not create a valid DateTime object from inputString
// to do :return something
}
}