10

http://plnkr.co/edit/5zxXEEz30t51yGhgYWVF?p=preview

我在我的应用程序中使用Moment.jsAngular-moment

出于某种原因,它将我所有的纪元时间戳转换为 1970 年以来的同一日期。

在此处输入图像描述

<td class="timespan">{{tag.added_epoch | amDateFormat:'dddd, MMMM Do YYYY'}}</td>

这就是tag.added_epoch价值所在added_epoch: 1432252800

但是,当我在线转换它时,我得到了正确的日期:

在此处输入图像描述

知道为什么我的过滤器变成14322528001970 年 1 月 17 日星期六吗?

4

2 回答 2

21

我只是快速总结问题和解决方案。

Moment.js 提供了两种不同的方法来从 unix 时间戳 moment(1432252800)moment.unix(1432252800).

两者同时开始(1970 年 1 月 1 日凌晨 12 点 UTC),但moment()使用毫秒数,大约 17 天并moment.unix()使用秒。

angular-moment 支持amFromUnix过滤器,参见源代码

您可以通过以下方式使用它

<time am-time-ago="myDate|amFromUnix">
{{myDate|amFromUnix|amCalendar}}
于 2016-01-29T20:59:28.967 回答
5

尝试编写自己的过滤器,如下所示:

 newapp.filter("fromTimestamp", function(){
   return function(timestamp, format){
     return moment.unix(timestamp).format(format)
   }
 })

并使用它们

<p class="date">{{date | fromTimestamp:'dddd, MMMM Do YYYY'}}</p>

Plunker 演示

于 2016-01-29T20:56:18.577 回答