Бриз: Форматирование даты

Я получаю даты с сервера в таком формате: Thu Apr 25 16:47:10 UTC+0200 2013.

Тип Date.

Я хочу, чтобы даты отображались в формате DD/MM/YYYY. Итак, я использовал Moment.js и в функции инициализации моей сущности, вызываемой из registerEntityTypeCtor, я делаю:

myEntity.CreatedDate = moment.utc(myEntity.CreatedDate).format('DD/MM/YYYY');

Хотя этот код возвращает правильно отформатированную дату, myEntity.CreatedDate остается прежним. На самом деле, если я проверяю в отладчике Visual Studio и расширяю свойство, оно говорит: «прототип: неверная дата».

У меня есть два вопроса:

  1. Я делаю это правильно? т. е. хорошо ли делать преобразование в registerEntityTypeCtor?
  2. Почему не работает :-) ?

person Sam    schedule 02.05.2013    source источник


Ответы (2)


Даты Breeze - это даты javascript. Что вы делаете, так это устанавливаете свойство даты со строкой. Затем Breeze пытается преобразовать строку с помощью метода javascript Date.parse в дату, чтобы проверить ее. Если это не удается, Бриз просто оставляет его в покое.

Как правило, если вы хотите отформатировать какие-либо свойства даты, это следует не делать в модели, а скорее в представлении. Другими словами, где бы вы ни отображали даты, это лучшее место для преобразования дат в строки. Если вы используете библиотеку привязки, такую ​​как ko или angular, обе предоставляют механизмы для этого, как и большинство механизмов шаблонов javascript.

person Jay Traband    schedule 02.05.2013
comment
да ты прав. Я не думал. Я использую AngularJS, и это так же просто, как сделать {{myEntity.CreatedDate | дата: 'дд/мм/гггг'}} - person Sam; 02.05.2013

moment("myEntity.CreatedDate", "Do MMM YYYY").format("DD/MM/YYYY")

установите «Do MMM YYYY» в соответствии с форматом, который вы получаете в myEntity.CreatedDate

person Lucky    schedule 15.05.2013