2014-01-23 172 views
10

我使用的是moment.js,并且想要计算两个时间戳之间的差异,然后将其格式化并显示在div中。moment.js差异日期格式

var diffTime = moment(1390310146.791877).diff(1390309386.271075); 

这让我760秒,但我想格式化这样的:

(天,小时,分钟,秒),并只显示天,小时和秒,如果他们是大于0。

我该如何做到这一点?

回答

16

试试这个

var diffTime = moment(moment(1390310146.791877).diff(1390309386.271075)).format('H m s'); 

它将输出 “5 30 0”

编辑

这里是一个简单的方式来获得差异。因为这两个时间应该在同一个时区。

var a = moment(1390310146.791877); 
var b = moment(1390309386.271075); 
a.diff(b)//To get the difference in milliseconds 
a.diff(b,'seconds')//To get the difference in seconds 
a.diff(b,'minutes')//To get the difference in minutes 
a.zone()//Get the timezone offset in minutes 

希望这会有所帮助。

+3

奇怪的是,给我1 0 0 ... – Newcoma

+0

它应该返回大约12分钟和40秒 – Newcoma

+1

这取决于本地浏览器的时区。 –

15

moment.duration应使用

var diffTime = moment('2016-06-13T00:00:00+08:00') 
    .diff('2016-06-13T00:00:00+00:00'); 
var duration = moment.duration(diffTime); 
var years = duration.years(), 
    days = duration.days(), 
    hrs = duration.hours(), 
    mins = duration.minutes(), 
    secs = duration.seconds(); 

var div = document.createElement('div'); 
div.innerHTML = years + ' years ' + days + ' days ' + hrs + ' hrs ' + mins + ' mins ' + secs + ' sec'; 
document.body.appendChild(div); 

jsfiddle

+0

为了这个工作正常,你还需要几个月。 'months = duration.months()' –