moment.js diff在月底时不正确的小时数

时间:2014-09-04 13:34:28

标签: momentjs

我有一个开始日期和时间,我检查结束日期和时间。在检查某个月内的两个日期时,一切似乎都能正常工作,但如果我从一个月结束到另一个月的开始,我会得到奇怪的结果。

如果我有一个开始日期和时间:

//08/31/2014 08:00AM
var AugEnd = moment([2014, 08, 31, 08, 00]);

结束日期和时间:

//09/01/2014 08:00AM
var SeptStart = moment([2014, 09, 01, 08, 00]);

我应该得到24的结果,但是我给了0而不是

var Time1 = SeptStart.diff(AugEnd, 'hours', true);

这似乎发生在大多数月份结束时,除了07/31 - 08/01和12/31 - 01/01。

这是一个jsfiddle:http://jsfiddle.net/65a83ckz/4/

我做错了什么?或者这是一个错误? (使用moment.min.js,版本2.8.2)

感谢Mudaser Ali的解决方案:

月份从0开始,

January = 0
February = 01
March = 02
April = 03
May = 04
June = 05
July = 06
Aug = 07
Sept = 08
Oct = 09 
Nov = 10
Dec = 11

1 个答案:

答案 0 :(得分:0)

首先,你的约会是inValid

var SeptStart = moment([2014, 08, 31, 08, 00]);

是9月的日期,因为在js月从0开始所以8 = 9月和9月有30天而不是31天所以它应该是

var SeptStart = moment([2014, 08, 30, 08, 00]);

所以更改后你会得到正确的结果

var SeptEnd = moment([2014, 09, 01, 08, 00]); //it is correct date

var SeptTime = SeptEnd.diff(SeptStart, 'hours', true); //equals to 24 hrs

http://jsfiddle.net/smakii/qs1b4298/1/