如何在Javascript中减去ISOdates

时间:2016-05-30 06:34:41

标签: javascript momentjs

有没有办法在moment.js的帮助下计算两个ISO日期的时差?

4 个答案:

答案 0 :(得分:1)

with 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 :(得分: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

答案 2 :(得分: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;

答案 3 :(得分:1)

这里有几个合理的答案,但是知道当前的.diff()函数接受一个单位参数。因此,以下内容将为您提供两个ISO日期之间的差异,以秒为单位:

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

或者,您可以提供diff而不是字符串的时刻:

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