Преобразование строки времени в дату объекта js angularJS

0

Я получаю следующую строку от REST api, 20160220 Я хочу сделать это 20/02/2016

Я использую angularJS. Поэтому мне понадобится фильтр. Я пробовал следовать

app.filter('myDateFilter', function() {

  return function(input) {

  var st = input;  
  var pattern = /(\d{4})(\d{2})(\d{2})/;
  var date = new Date(st.replace(pattern, '$1-$2-$3'));

  return date;

  }

});

И в html я использовал

                <td>
                    {{t["due-date"] | myDateFilter}}
                </td>

Это возвращает 2016-02-20T00: 00: 00.000Z

Вопрос о регулярном выражении? Можете ли вы любезно дать мне правильный код, который должен был использоваться вместо этого для генерации 20/02/2016.

  • 0
    Регулярное выражение вопроса Нах. Это потому, что вы передаете строку в Date() , время добавляется автоматически.
  • 0
    Извините, я не получил проблему: дата, которую вы получаете, является правильной.
Показать ещё 3 комментария

2 ответа

1
Лучший ответ

Наивное преобразование Date в строку приводит к выводу, который вы видите:

console.log(new Date()) // "2016-09-02T15:19:07.921Z"

Вместо этого убедитесь, что вы форматируете дату в строку вручную, прежде чем возвращать ее. Например toLocaleDateString() преобразует Date в строку с учетом языкового стандарта браузера:

console.log(new Date().toLocaleDateString()) // "09/02/2016"
0

То, что вы делаете, это преобразование объекта String в Date(), что кажется мне правильным. Если вы попытаетесь показать свой объект Date() в своем представлении, то вы получите формат даты по умолчанию.

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

Вам нужно будет добавить его в свой шаблон, например:

<td>
    {{t["due-date"] | myDateFilter | date : 'dd/MM/yyyy'}}
</td>

Этот фильтр date будет принимать в качестве объекта Date() возвращаемого вашим настраиваемым фильтром myDateFilter и создает String представляющую этот объект в качестве вывода.

Это хороший пример того, как должны использоваться угловые фильтры и цепочка фильтров.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню