首页 > 解决方案 > 如何获取 JavaScript Date 对象中的日期差异?

问题描述

考虑我有一个日期数组,例如:

abc = [new Date("2015-03-01"),new Date("2015-03-02"),new Date("2015-03-03"),new Date("2015-03-04")]

输出:

[Sun Mar 01 2015 05:30:00 GMT+0530 (India Standard Time), Mon Mar 02 2015 05:30:00 GMT+0530 (India Standard Time), Tue Mar 03 2015 05:30:00 GMT+0530 (India Standard Time), Wed Mar 04 2015 05:30:00 GMT+0530 (India Standard Time)]

我试图推动两个日期之间的差异,并试图将数据存储在一个新数组中。这是我尝试过的,

var arr = [];
abc = [new Date("2015-03-01"),new Date("2015-03-01"),new Date("2015-03-02"),new Date("2015-03-03"),new Date("2015-03-04")];

for (let i = 0; i < abc.length-1; i++){
    arr.push((abc[i+1].getDate() - abc[i].getDate())+1)
}

我得到的输出是:

[1,2, 2, 2]

但我需要输出类似

[1,2,3,4] 

我需要在每个日期差异上加上加一。我怎样才能做到这一点?

标签: javascript

解决方案


格式为 YYYY-MM-DD 的日期被解析为 UTC,其中每天(在 ECMAScript 中)的长度正好是 8.64e7 毫秒,这使得简单的算术变得非常简单。:-)

由于日期是一整天并被视为 UTC,因此您只需将日期相减并除以 8.64e7 即可获得全天差异。

此外,您似乎想要与第一次约会有所不同,因此请保持不变,例如

let arr = [];
let abc = [new Date("2015-03-01"),new Date("2015-03-01"),new Date("2015-03-02"),new Date("2015-03-03"),new Date("2015-03-04")];

for (let i = 0; i < abc.length-1; i++){
    arr.push(1 + (abc[i+1] - abc[0])/8.64e7);
}

console.log(arr);


推荐阅读