在 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