<%= Html.ActionLink(Html.Encode("user3"),
"Filter", new { controller = "Search",
userName = "user3",
dateFrom = DateTime.Now.AddDays(-2).ToString(),
dateTo = DateTime.Now.ToString() })%>
Это оценено к этой ссылке:
http://localhost:60357/Search/Filter?userName=user3&dateFrom=08.02.2010%2023%3A21%3A33&dateTo=10.02.2010%2023%3A21%3A33
Я должен заметить, что текущие настройки Globalization в Windows установлены до европейского формата даты. Так 02.08.2010 = 08 февраля 2010.
Но в методе действия
public ActionResult Filter(String userName, DateTime dateFrom, DateTime dateTo)
dateFrom имеет значение 08.02.2010 = 02 августа 2010
Это неправильно. Это - ошибка платформы? Таким образом, что лучший способ состоит в том, чтобы решить эту проблему? Я не хочу писать некоторый monkeypatch, если это возможно.
Don't use DateTime.Now.ToString()
. Используйте DateTime.Now.ToString("s")
(формат ISO 8601 -- yyyy-MM-ddTHH:mm:ss) Существует только один возможный способ интерпретации, поэтому он никогда не ошибается -- по крайней мере, пока вы не начнете иметь дело с часовыми поясами! (Рассмотрим для этого формат "u"
)