日期格式切换传递参数从Jquery到控制器

时间:2015-11-27 03:36:44

标签: asp.net-mvc asp.net-core asp.net-core-mvc

我在我看来使用以下内容:

   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"));

1 个答案:

答案 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
   }
}