【问题标题】:How to get difference of date in JavaScript Date object? [duplicate]如何获取 JavaScript Date 对象中的日期差异? [复制]
【发布时间】:2020-05-07 06:30:06
【问题描述】:

假设我有一个日期数组,例如:

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


【解决方案1】:

格式为 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);

【讨论】:

    【解决方案2】:

    这是你想要的吗?

    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")];
    
    const result = abc.slice(1).map(date => ~~((date-abc[0]) / (24*60*60*1000)) + 1)
    
    console.log(result)

    【讨论】:

    • 这不适用于不同月份的日期。
    • 是的,这不适用于两个不同月份的日期
    猜你喜欢
    • 1970-01-01
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多