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

Leo*_*ban 5 javascript timestamp angularjs momentjs angular-moment

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

我在我的应用程序中使用Moment.js和Angular-moment.

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

在此输入图像描述

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

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

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

在此输入图像描述

任何想法,为什么我的过滤器正在转向1432252800到周六,1970年1月17日?

Arm*_*msg 14

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

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

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

角度矩支持amFromUnix滤波器,参见源

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

<time am-time-ago="myDate|amFromUnix">
{{myDate|amFromUnix|amCalendar}}
Run Code Online (Sandbox Code Playgroud)


Env*_*off 5

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

 newapp.filter("fromTimestamp", function(){
   return function(timestamp, format){
     return moment.unix(timestamp).format(format)
   }
 })
Run Code Online (Sandbox Code Playgroud)

并使用它们

<p class="date">{{date | fromTimestamp:'dddd, MMMM Do YYYY'}}</p>
Run Code Online (Sandbox Code Playgroud)

Plunker 演示