2016-01-29 63 views
4

http://plnkr.co/edit/5zxXEEz30t51yGhgYWVF?p=previewMoment.js amDateFormat总是我在我的应用程序中使用<a href="http://momentjs.com/" rel="nofollow noreferrer">Moment.js</a>和<a href="https://github.com/urish/angular-moment" rel="nofollow noreferrer">Angular-moment</a>从1970年

返回日期。

出于某种原因,它是将我所有的纪元时间戳为相同的日期从1970年

enter image description here

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

这就是tag.added_epochadded_epoch: 1432252800

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

enter image description here

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

+1

你试过'moment.unix()'在角时刻这将是'< span am-time-ago =“message.unixTime | amFromUnix”>' – Arminmsg

+1

我得到这个错误'未知的提供者:amFromUnixFilterProvider < - amFromUnixFilter'看起来像我需要使用不同版本的lib :(但我的数字是否正确? –

+1

我已经快速浏览过moment.js,如果我只是使用'moment(1432252800)'我得到了1970他1970年的日期与'unix'方法我得到了2015年的日期,所以你的数字似乎是正确的。 来自角度矩文档: 注意:要使用amFromUnix,请安装angular-moment版本1.0.0-beta.3 – Arminmsg

回答

7

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

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

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

角时刻支持amFromUnix过滤器,见source

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

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

试着写自己的过滤器,像这样:

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

+0

谢谢! +1超级干净:)然而,Arminmsg确实回答了我确切的问题,但您的解决方案实际上可能用于替换我们的代码。 –

+1

@LeonGaban感谢+1) –

相关问题