Фильтр формата даты не работает angular js

Я новичок в угловом js. Я пытаюсь указать формат даты, например Nov-24-2016, но он вообще не работает. Ниже мой код.

{{ x.created | date:" MM-d-y" }}

Вот хочу такой формат Nov-24-2016

и x.created value = 2016-11-24 08:02:21

Любое предложение? Спасибо


person sradha    schedule 24.11.2016    source источник


Ответы (5)


вы можете создать пользовательский

.filter('datetime', function($filter){
    return function(input){
      if(input == null){ return ""; } 

      var _date = $filter('date')(new Date(input),'MM-dd-yyyy');         
      return _date.toUpperCase();

    };
});


{{ x.created | datetime }}
person Sachila Ranawaka    schedule 24.11.2016
comment
Привет, я получаю это НОЯБРЬ-24-2016. Я хочу, чтобы название месяца было сокращено до NOV. Я использовал этот формат var _date = $filter('date')(new Date(input), 'MMMM-dd- гггг'); - person sradha; 24.11.2016
comment
попробуйте использовать «МММ» в месяцах - person Sachila Ranawaka; 24.11.2016

Взгляните на документацию: https://docs.angularjs.org/api/ng/filter/date

x.created должен быть либо объектом Date, либо строкой времени с миллисекундами, начиная с эпохи UTC.

Поэтому либо создайте для него ручной фильтр, либо проанализируйте строку даты в объект Date.

person Lacrioque    schedule 24.11.2016

Для использования date Pipe x.created должен быть объектом даты или числом (миллисекунды с эпохи UTC) или строкой ISO в соответствии с DatePipe

person ranakrunal9    schedule 24.11.2016

{{ x.created | date: "MMM-d-y" }} преобразуется в Nov-24-2016

Кстати: 2016-11-24 08:02:21 кажется недопустимой строкой ISO, https://www.w3.org/TR/NOTE-datetime. Вы могли бы проверить это.

person philipooo    schedule 24.11.2016

У меня была аналогичная проблема. Это исправляется через 2 шага, измените кодировку документа на utf-8 без спецификации и вручную перепишите данные времени. Вот так - дата: 2013-12-02T17:57:28.556094Z

person MOgorodnik    schedule 12.03.2017