61

我正在从数据库中获取数据并显示它:

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

Unix 日期在哪里{{item.date}},例如 1374843600。如何使用 AngularJS 指令设置日期格式?可能吗?

当我尝试这样做时,我得到了标签 mydate 的值-{{item.date}}

4

6 回答 6

217

我遇到了将 unix 时间格式化为从纪元开始的秒数或JavaScript 中使用的毫秒数的问题。所以严格来说,AngularJS 不会将 Unix 时间戳转换为日期,而是一个以毫秒为单位的数字,它大 1000 倍,所以首先你必须将输入的数字乘以 1000,如下所示:

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

否则你的日期将是错误的。

于 2013-09-09T10:56:20.370 回答
89

使用这样的格式date filter

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

参考

于 2013-07-29T13:16:19.103 回答
5

如果您有 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>
于 2016-03-18T10:35:49.677 回答
3

您应该使用 angular: 这里已经提供的日期过滤器

于 2013-07-29T13:15:23.540 回答
3
 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}}

于 2014-12-25T04:08:14.740 回答
1

有一个称为 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

于 2016-11-16T08:30:06.143 回答