AngularJS. Преобразование значения тега (время Unix для чтения человеком)

Я получаю данные из базы данных и отображаю ее:

    <ul>
       <li ng-repeat="item in items>
          <mydate>{{item.date}}</mydate>
        </li>
    </ul>

Где {{item.date}} - дата Unix, такая как 1374843600. Как установить формат даты с помощью директив AngularJS? Возможно ли это?

Когда я пытался это сделать, я получал значение tag mydate - {{item.date}}

Ответ 1

Используйте формат date filter следующим образом:

<mydate>{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}</mydate>

Ссылка

Ответ 2

Я столкнулся с проблемой с unix-временем, отформатированным как число секунд от начала эпохи или как число миллисекунд, которое используется в JavaScript. Так, строго говоря, AngularJS не конвертирует временную метку Unix в Date, а число с миллисекундами, которое в 1000 раз больше, поэтому сначала вам нужно будет умножить свой номер ввода на 1000, например:

<mydate>{{item.date * 1000 | date:'yyyy-MM-dd HH:mm:ss Z'}}</mydate>

В противном случае ваша дата будет неправильной.

Ответ 3

Если у вас есть временная метка Unix, вам, вероятно, придется умножить метку времени на 1000, поскольку временная метка Unix находится в секундах, а для фильтра даты в формате AngularJs требуется миллисекунды.

vm.milliseconds = Date('1441981121' * 1000);

затем используйте функцию $filter()

var date = $filter('date')(vm.milliseconds, 'd MMMM yyyy');

или вы можете использовать в ng-bind

<span ng-bind="myController.milliseconds | date : 'd MMMM yyyy'"></span>

Ответ 4

Вы должны использовать фильтр даты, который уже предоставлен angular: здесь

Ответ 5

 yourapp.filter('timestampToDate', function () {
    return function (timestamp) {
        var date = new Date(timestamp * 1000);
        var dateObject = date.getFullYear() +'/'+ ('0' + (date.getMonth() + 1)).slice(-2) +'/'+ ('0' + date.getDate()).slice(-2);
        return dateObject;
    };
});

Использование:
{{timestamp | timestampToDate}}

Ответ 6

Существует директива для того, что называется rsTime.

    <rs-time start-time="1478513323" digital-format="'ddd MMM d h:mm TT'"></rs-time>

Проверьте демо на Plunker.

Ниже представлены разные формы времени:

 M/d/y -  11/7/2016

 HH:mm:ss - 16:02:31 (24hrs formate)

 hh:mm:ss TT - 04:03:10 PM

 ddd MMM d h:mm TT  - Mon Nov 7 at 4:04 PM

Для документации посетите Github