Moment.js amDateFormat总是从1970年开始返回日期

时间:2016-01-29 20:21:01

标签: javascript angularjs timestamp momentjs angular-moment

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

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

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

enter image description here

Tuple

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

的内容

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

enter image description here

知道为什么我的过滤器会将added_epoch: 1432252800转变为 1970年1月17日星期六吗?

2 个答案:

答案 0 :(得分:11)

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

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

两者都是在同一时间(1970年1月1日12 AM UTC)开始,但moment()使用的数字为毫秒,大约为17天,moment.unix()使用秒。

angular-moment支持amFromUnix过滤器,请参阅source

您可以按以下方式使用

<time am-time-ago="myDate|amFromUnix">
{{myDate|amFromUnix|amCalendar}}

答案 1 :(得分:3)

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

 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 demo