在 JavaScript 中进行日期相减

Valentine Kagwiria 2023年10月12日
  1. 在 JavaScript 中使用 getTime() 函数进行 Datetime 相减
  2. 使用 Math.abs() 函数对日期时间进行相减
  3. 使用 Date.UTC() 函数将日期转换为 UTC
在 JavaScript 中进行日期相减

本文介绍了如何在 JavaScript 中减去两个日期。

在 JavaScript 中使用 getTime() 函数进行 Datetime 相减

第一步是使用内置的 new Date() 函数定义两个日期。为了得到它们之间的天数差,使用 getTime() 函数减去这两个日期,将它们转换为数值。你可以打印以天为单位的结果,或者根据需要将其转换为小时、分钟、秒或毫秒。下面是示例代码。

var day1 = new Date('08/25/2020');
var day2 = new Date('12/25/2021');

var difference = day2.getTime() - day1.getTime();

document.write(difference);

输出:

42080400000

使用 Math.abs() 函数对日期时间进行相减

这个过程与第一个过程类似,只是它返回的是绝对值。你需要定义两个日期,然后使用 Math.abs() 函数将两个变量相减,如下所示。

var day1 = new Date('08/25/2020');
var day2 = new Date('08/25/2021');

var difference = Math.abs(day2 - day1);
days = difference / (1000 * 3600 * 24)

console.log(days)

输出:

365

注意,Math.abs() 函数是区分大小写的,如果写的不一样,将无法使用。

使用 Date.UTC() 函数将日期转换为 UTC

当问题的日期跨越夏令时的变化时,上面的解决方案可能会有一点问题。解决这个问题的最好方法是将日期转换为 UTC,首先摆脱 DST,然后得到它们之间的差异。我们需要为这两个日期创建一个函数,其中包含两个对象,即

function difference(date1, date2) {
  const date1utc =
      Date.UTC(date1.getFullYear(), date1.getMonth(), date1.getDate());
  const date2utc =
      Date.UTC(date2.getFullYear(), date2.getMonth(), date2.getDate());
  day = 1000 * 60 * 60 * 24;
  return (date2utc - date1utc) / day
}

const date1 = new Date('2020-12-10'), date2 = new Date('2021-10-31'),
      time_difference = difference(date1, date2)

console.log(time_difference)

输出:

325

相关文章 - JavaScript DateTime