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