Ove*_*ose 5 asp.net-mvc datetime
<%= Html.ActionLink(Html.Encode("user3"),
"Filter", new { controller = "Search",
userName = "user3",
dateFrom = DateTime.Now.AddDays(-2).ToString(),
dateTo = DateTime.Now.ToString() })%>
Run Code Online (Sandbox Code Playgroud)
它被评估到这个链接:
http://localhost:60357/Search/Filter?userName=user3&dateFrom=08.02.2010%2023%3A21%3A33&dateTo=10.02.2010%2023%3A21%3A33
Run Code Online (Sandbox Code Playgroud)
我必须注意到,Windows中当前的全球化设置已设置为欧洲日期格式.所以08.02.2010 = 2010年2月8日.
但在动作方法中
public ActionResult Filter(String userName, DateTime dateFrom, DateTime dateTo)
Run Code Online (Sandbox Code Playgroud)
dateFrom的值为02.08.2010 = 2010年8月2日
这是不正确的.是框架错误吗?那么解决这个问题的最佳方法是什么?如果可能的话,我不想写一些monkeypatch.
不要用DateTime.Now.ToString()
.使用DateTime.Now.ToString("s")
(ISO 8601格式 - yyyy-MM-ddTHH:mm:ss)只有一种方法可以解释它,所以它永远不会错 - 至少,直到你开始处理时区!(考虑"u"
格式.)