ASP.NET MVC 2 Beta: преобразование даты и времени. Баг или нет? - PullRequest
5 голосов
/ 11 февраля 2010
<%= 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

Я должен заметить, что текущие настройки глобализации в Windows настроены на европейский формат даты. Итак, 08.02.2010 = 08 февраля 2010 года.

Но в действии метод

public ActionResult Filter(String userName, DateTime dateFrom, DateTime dateTo)

dateFrom имеет значение 02.08.2010 = 02 августа 2010

Это неправильно. Это ошибка фреймворка? Итак, как лучше всего решить эту проблему? Я не хочу писать какие-то обезьяньи патчи, если это возможно.

1 Ответ

5 голосов
/ 11 февраля 2010

Не используйте DateTime.Now.ToString(). Используйте DateTime.Now.ToString("s") (формат ISO 8601 - гггг-ММ-ддТЧч: мм: сс) Существует только один возможный способ интерпретировать это, поэтому он никогда не ошибается - по крайней мере, пока вы не начнете работать с часовыми поясами! (Рассмотрим "u" формат для этого.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...