我在asp.net中使用datetime
时遇到了一个问题。根据土耳其文化将日期时间字符串从文本框发送到DateTime时,datetime
格式正在中断。
例如;我在querystring上发送这些参数 -
?beginDate=02.01.2014&endDate=03.01.2014
,这些参数值在传递ActionResult参数时显示如下 -
beginDate = 01.02.2014, endDate = 03.01.2014
。
我尝试了一些解决方案,但问题仍然存在。
1)
protected void Application_Start()
{
System.Threading.Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("tr-TR");
System.Threading.Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("tr-TR");
}
2)
<globalization uiCulture="tr-TR" culture="tr-TR" />
第3)
return Json(_db.GetList(Convert.ToDateTime(begin, new CultureInfo("tr-TR")), Convert.ToDateTime(end, new CultureInfo("tr-TR")))
4)
begin.Value.ToString("dd.mm.yyyy")
end.Value.ToString("dd.mm.yyyy")
网址
domain.com/Home/GetList?begin=02.01.2014&end=03.01.2014
GetList方法
public JsonResult GetList(DateTime? begin, DateTime? end)
{
return Json(_db.GetList(Convert.ToDateTime(begin, new CultureInfo("tr-TR")), Convert.ToDateTime(end, new CultureInfo("tr-TR")))
}
答案 0 :(得分:0)
GET参数的默认模型绑定器文化无关。这意味着在将日期作为查询字符串参数发送到控制器操作时,应始终使用yyyy-MM-dd
以下格式:
?beginDate=2014-01-02&endDate=2014-01-03
如果您在POST请求的有效负载中发送这些日期,文化就会发挥作用。
这个实施细节背后有一个原因。您可以在以下文章中详细了解它:http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx
这就是说你可以摆脱你尝试过的所有1.,2.,3.,4.,5.分,只需使用begin
和end
DateTime参数。您无需设置应用程序的区域性信息。