форматирование даты в таблице angularJS - PullRequest
0 голосов
/ 24 октября 2018

Я создаю веб-приложение в angularJS. У меня есть дата в следующем формате

"response.data [0] .Date =" / Date (1539887400000) / "

Я могу преобразовать эту дату в обычную MM-DD-YYYY с моментом, например,

moment(response.data[0].Date).format('DD-MM-YYYY');

, но, связывая данные в таблицу с помощью ng-repeat, я не могу этого достичь

Я сделал что-то вроде этого

<td>{{d.Date| date:'DD-MM-YYYY' }}</td>

, но в таблице он по-прежнему показывает, как /Date(1539887400000)/

, что мне нужно сделать, чтобы преобразовать /Date(1539887400000)/ в DD-MM-YYYY

1 Ответ

0 голосов
/ 24 октября 2018

Ваша проблема в том, что используемый вами фильтр date определен AngularJS и предназначен для работы с объектами даты, количеством секунд с начала эпохи или специально отформатированными строками (см .: https://docs.angularjs.org/api/ng/filter/date). В вашем случае вы передаете строку "Date(1539887400000)", которая не соответствует ни одному из конкретных форматов, ожидаемых аргументом фильтра date. Вот несколько способов, которые я мог бы решить для решения этой проблемы:

  • Вы можете инициализировать опцию даты после получения данных из базы данных, например: $scope.testDate = new Date(1539887400000);. Затем вы можете использовать фильтр регулярных угловых дат для этого объекта: {{testDate | date: 'dd-MM-yyyy'}}.
  • Вы можете использовать угловой момент (ссылка: https://github.com/urish/angular-moment),, который имеет больше возможностей, чем обычный фильтр даты angularJS. Затем вы можете использовать amDateFormat и передать вашу строку, например, так: {{d.Date | amDateFormat: 'DD-MM-YYYY'}}
  • Вы можете проанализировать число из строки, которая у вас есть в настоящее время. Так как обычный фильтр angularJS date может принимать число (секунды с начала эпохи), поскольку этоrgument, он будет правильно отформатирован.

Посмотрите на пример плунжера, где показаны некоторые из них в действии: https://plnkr.co/edit/quCvL3GhSux8ctYQqAwA

...