AngularJS。 将标签值(Unix时间转换为人类可读的时间)

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

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

其中{{item.date}}是Unixdate,例如1374843600.我如何使用AngularJS指令设置date格式? 可能吗?

当我试图做到这一点,我得到的价值标签mydate – {{item.date}}

使用格式date filter是这样的:

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

参考

我已经面对的问题与unix时间格式化为从纪元开始数秒或作为在JavaScript中使用的毫秒数。 所以严格来说,AngularJS不会将Unix时间戳转换为date,而是一个毫秒数的1000倍,因此首先您必须将input数乘以1000,如下所示:

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

否则你的date将是错误的。

如果你有一个Unix时间戳,你可能不得不把你的时间戳乘以1000,因为Unix时间戳是几秒,而AngularJsdatefilter需要几毫秒。

 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> 

你应该使用已经由angular提供的datefilter: 这里

  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}}

有一个叫做rsTime的指令。

  <rs-time start-time="1478513323" digital-format="'ddd MMM dh: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 dh:mm TT - Mon Nov 7 at 4:04 PM 

有关文档,请访问Github