在 JavaScript 中進行日期相減
Valentine Kagwiria
2023年10月12日
本文介紹瞭如何在 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