Не в состоянии применить угловой JS встроенный фильтр для даты

0

Моя переменная области содержит дату в этом формате:

$scope.thisDay="2016-01-01 00:00:01"

{{thisDay}} --->2016-01-01 00:00:01

Я применил фильтр даты для приведенного выше:

{{thisDay | date:'medium'}}

Но, похоже, это не работает в моем случае. Любые предложения относительно вышеуказанного...

Теги:
date
angularjs-filter

2 ответа

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

Данные о дате Date фильтрации нужны, но вы указываете строку вместо даты.

Попробуйте это

$scope.thisDay=new Date("2016-01-01 00:00:01");

JSFIDDLE

Если вы не хотите конвертировать дату в область

Затем создайте фильтр, который преобразует вашу строку в объект даты

myApp.filter('convert2date', function() {
  return function(input) {
    return input ? new Date(input) : "";
  };
});

Добавьте его html

 {{thisDay | convert2date |date:'medium'}}

JSFIDDLE

  • 0
    Я хочу внести изменения прямо в HTML
  • 0
    Я получаю ноль в результате скрипки
Показать ещё 2 комментария
0

Согласно документации фильтра 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'}}

Ещё вопросы

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