在 JavaScript 中进行日期相减
Valentine Kagwiria
2023年1月30日
2020年12月19日
本文介绍了如何在 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