ASP.NET MVC — атрибут DisplayFormat

В моей модели у меня есть свойство MyDate, имеющее тип datetime. Я подписываю свойство атрибутом DisplayFormat в этом режиме:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy hh:mm}")]
public DateTime MyDate { get; set; }

по-моему:

...
<%= Html.EditorFor(model => model.Evento.MyDate)%>
...

почему, если значение свойства равно «2011-05-03 14:47», на мой взгляд (в EditorFor), я вижу «05.03.2011 02.47»?

DataFormatString правильный!

большое спасибо за ответ

Альберто


person Alberto Rubini    schedule 05.05.2011    source источник


Ответы (2)


Если я не ошибаюсь, строка формата {0:dd/MM/yyyy hh:mm} будет выводиться как 03/05/2011 02.47. Вы видите то, что я ожидал увидеть.

ОБНОВЛЕНИЕ: чтобы получить 24-часовую нотацию, вы можете использовать {0:dd/MM/yyyy HH:mm} с заглавной буквой HH для обозначения часа.

person ataddeini    schedule 05.05.2011
comment
моя проблема в том, что время не отформатировано правильно. Я ожидал 14:47, нет 02.47... - person Alberto Rubini; 06.05.2011
comment
@ Альберто Рубини: А, понятно. Я обновил свой ответ, чтобы отразить то, чего вы пытаетесь достичь. Надеюсь, это сработает для вас. - person ataddeini; 06.05.2011

Это потому, что : является зарезервированным символом, указывающим разделитель времени для данной культуры, который в вашем случае может быть символом .. Вы хотите:

DataFormatString = @"{0:dd/MM/yyyy HH\:mm}"

Возможно, вы также захотите использовать HH, который является 24-часовым форматом, вместо hh.

person Darin Dimitrov    schedule 05.05.2011