Моя переменная области содержит дату в этом формате:
$scope.thisDay="2016-01-01 00:00:01"
{{thisDay}} --->2016-01-01 00:00:01
Я применил фильтр даты для приведенного выше:
{{thisDay | date:'medium'}}
Но, похоже, это не работает в моем случае. Любые предложения относительно вышеуказанного...
Данные о дате Date
фильтрации нужны, но вы указываете строку вместо даты.
Попробуйте это
$scope.thisDay=new Date("2016-01-01 00:00:01");
Если вы не хотите конвертировать дату в область
Затем создайте фильтр, который преобразует вашу строку в объект даты
myApp.filter('convert2date', function() {
return function(input) {
return input ? new Date(input) : "";
};
});
Добавьте его html
{{thisDay | convert2date |date:'medium'}}
Согласно документации фильтра date
аргумент date
должен быть:
Дата для форматирования как объекта Date, миллисекунды (строка или номер) или различные форматы строк даты и времени ISO 8601 (например, yyyy-MM-ddTHH: mm: ss.sssZ и его более короткие версии, такие как yyyy-MM-ddTHH: mmZ, yyyy-MM -dd или yyyyMMddTHHmmssZ). Если часовой пояс не указан в строковом вводе, время считается находящимся в локальном часовом поясе.
Итак, вам нужно преобразовать свою строку в действительную дату javascript, возможно создать собственный фильтр, зависящий от встроенного фильтра даты angularjs
angular.module('app').filter('customDateFormat', function($filter) {
return function(value) {
if (value == null) {
return "";
}
return $filter('date')(new Date(value).toISOString(), 'medium');
};
});
Затем в вашем html, {{ thisDay | customDateFormat}}
{{ thisDay | customDateFormat}}
Обновить:
Кроме того, что, если вы хотите сделать свой фильтр более общим и передать формат даты вместе с вашей датой:
angular.module('app').filter('customDate', function($filter) {
return function(value, format, defaultValue) {
if (value == null) {
if (defaultValue) {
return defaultValue;
} else {
return "";
}
}
return $filter('date')(new Date(value).toISOString(), format);
};
});
Затем в вашем HTML:
{{thisDay | customDateFormat:'shortTime'}}