📜  在 js 中比较日期 - Javascript (1)

📅  最后修改于: 2023-12-03 14:50:58.002000             🧑  作者: Mango

在 JS 中比较日期

在日常编程中,相对日期(即以从某个日期开始的某段时间表示的日期)的比较是很常见的。在 JS 中,有多种方法可以进行日期的比较。

比较两个日期的大小

如果需要比较两个日期的大小,最好将两个日期都转换为时间戳(Unix 时间戳表示从 1970 年 1 月 1 日 00:00:00 UTC 起的毫秒数)进行比较。可以使用 Date 对象的 getTime() 方法获取日期的时间戳。

let date1 = new Date('2022-07-01');
let date2 = new Date('2022-07-02');

if (date1.getTime() < date2.getTime()){
  console.log('date1 小于 date2');
} else {
  console.log('date1 大于等于 date2');
}

输出结果为:

date1 小于 date2
判断两个日期是否相等

在 JS 中比较两个对象是否相等通常使用严格等于运算符 ===,但是对于两个日期对象,这并不完全正确,因为它们的引用地址可能不同,但它们表示的日期是相同的。因此,应该比较它们的时间戳是否相等。

let date1 = new Date('2022-07-01');
let date2 = new Date('2022-07-01');

if (date1.getTime() === date2.getTime()){
  console.log('两个日期相等');
} else {
  console.log('两个日期不相等');
}

输出结果为:

两个日期相等
判断一个日期是否在另一个日期之前或之后

判断一个日期是否在另一个日期之前或之后,与比较大小的方法类似,也是将日期转换为时间戳,然后进行比较。

let date1 = new Date('2022-07-01');
let date2 = new Date('2022-07-02');

if (date1.getTime() < date2.getTime()){
  console.log('date1 在 date2 之前');
} else if (date1.getTime() > date2.getTime()){
  console.log('date1 在 date2 之后');
} else {
  console.log('date1 和 date2 相等');
}

输出结果为:

date1 在 date2 之前
判断一个日期是否在某个时间范围内

如果需要判断一个日期是否在某个时间范围内,可以将时间范围也转换为时间戳,然后进行比较。

let startDate = new Date('2022-07-01');
let endDate = new Date('2022-07-31');
let targetDate = new Date('2022-07-15');

if (targetDate.getTime() >= startDate.getTime() && targetDate.getTime() <= endDate.getTime()){
  console.log('targetDate 在 startDate 和 endDate 之间');
} else {
  console.log('targetDate 不在 startDate 和 endDate 之间');
}

输出结果为:

targetDate 在 startDate 和 endDate 之间

总结来说,日期比较的核心是将日期转换为时间戳,然后进行比较。通过这种方式,可以很方便地比较两个日期的大小、判断两个日期是否相等、判断一个日期是否在另一个日期之前或之后、判断一个日期是否在某个时间范围内。