Я получаю следующую строку от 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.
Наивное преобразование Date
в строку приводит к выводу, который вы видите:
console.log(new Date()) // "2016-09-02T15:19:07.921Z"
Вместо этого убедитесь, что вы форматируете дату в строку вручную, прежде чем возвращать ее. Например toLocaleDateString()
преобразует Date
в строку с учетом языкового стандарта браузера:
console.log(new Date().toLocaleDateString()) // "09/02/2016"
То, что вы делаете, это преобразование объекта 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
представляющую этот объект в качестве вывода.
Это хороший пример того, как должны использоваться угловые фильтры и цепочка фильтров.
Date()
, время добавляется автоматически.