2016-05-30 73 views
0

有沒有一種方法可以在moment.js的幫助下從兩個ISOdates中計算時差?如何用Javascript減去ISOdates

+1

你甚至可以計算出它沒有'moment.js' .. – choz

+0

您能給我時刻JS的例子 - 我通過API走去,但有困難執行它。 – Marc

+0

你能提供至少一個不能工作的樣本嗎? – choz

回答

1

與momentjs:

moment('Mon May 30 2016 08:00:00.000Z GMT+0200 (CEST)').diff('Mon May 30 2016 07:00:00.000Z GMT+0200 (CEST)'); 

沒有momentjs:

new Date('Mon May 30 2016 08:00:00.000Z GMT+0200 (CEST)').getTime() - new Date('Mon May 30 2016 07:00:00.000Z GMT+0200 (CEST)') 
1

正如moment.js文檔說。

你可以得到兩個日期之間的差異在這個片段:

var a = moment([2007, 0, 29]); 
var b = moment([2007, 0, 28]); 
a.diff(b) // 86400000 

如果你想在天的差異,你可以用這一個:

var a = moment([2007, 0, 29]); 
var b = moment([2007, 0, 28]); 
a.diff(b, 'days') // 1 
1

你可以試試,

var m1 = moment('2016-04-06T17:49:18.000Z'); 
var m2 = moment('2016-04-06T17:47:24.000Z'); 
var diffSeconds = (m2.diff(m1))/1000; 

或者純粹的JS,但不是真正的跨瀏覽器友好。

var date1 = new Date('2016-04-06T17:49:18.000Z'); 
var date2 = new Date('2016-04-06T17:47:24.000Z'); 
var dateDiff = date2 - date1; 
var dateDiffSeconds = dateDiff/1000; 
1

這裏有幾個合理的答案,但知道.diff()函數在瞬間接受單位參數。因此,下面將讓你在幾秒鐘內2個ISO日期之間的差值:

moment('2016-01-01T12:25:32').diff('2016-01-01T22:13:16', 'seconds') 
-35264 

或者,你可以提供一個時刻差異,而非一個字符串:

var a = moment('2016-01-01T22:13:16'); 
moment('2016-01-01T12:25:32').diff(a, 'seconds') 
-35264 

還是一個JS日期:

moment('2016-01-01T12:25:32').diff(new Date(), 'seconds') 
-12940577 

如果你喜歡。您可以使用許多其他單位的大小,以及:

moment('2016-01-01T12:25:32').diff('2016-01-01T22:13:16', 'hours') 
-9 

moment('2016-01-01T12:25:32').diff('2016-04-01T22:13:16', 'months') 
-3