日期比较技巧

发布时间:2023-05-21

一、日期格式化

日期比较的首要条件是将日期转换成可比较的格式。在JavaScript中,我们常用的日期格式为年-月-日(YYYY-MM-DD)和秒数(1970年1月1日起的毫秒数)。日期格式化包括两个方面:将日期对象转换为字符串和将字符串转换为日期对象。

1.将日期对象转换为字符串

const now = new Date();
console.log(now.toISOString()); // 输出:2021-04-30T05:44:51.340Z

使用 toISOString() 方法将日期对象转换为ISO标准的日期字符串。除了 toISOString() 方法,还可以使用 toLocaleDateString()toLocaleString() 等方法,不同的方法适用于不同的场景。

2.将字符串转换为日期对象

const dateString = '2021-04-30';
const date = new Date(dateString);
console.log(date); // 输出:Fri Apr 30 2021 08:00:00 GMT+0800 (中国标准时间)

使用 Date() 构造函数将字符串转换为日期对象。需要注意的是,字符串的格式必须符合ISO标准,否则会出现不可预知的错误。

二、日期比较

日期比较是指对两个日期进行大小比较或间隔计算。在JavaScript中,我们可以使用比较运算符(>、<、== 等)进行大小比较,使用数学运算符进行间隔计算。

1.日期大小比较

const date1 = new Date('2021-04-30');
const date2 = new Date('2021-05-01');
if (date1 < date2) {
  console.log('date1 在 date2 之前')
} else {
  console.log('date1 在 date2 之后')
}

使用比较运算符对两个日期进行大小比较。在比较大小之前,需要将日期转换为可比较的格式(比如毫秒数或UTC时间戳)。

2.日期间隔计算

const date1 = new Date('2021-04-30');
const date2 = new Date('2021-05-01');
const interval = Math.abs(date2 - date1) / (1000 * 60 * 60 * 24);
console.log(interval); // 输出:1

使用数学运算符对两个日期进行间隔计算。需要注意的是,日期之间的间隔计算需要将日期转换为毫秒数,再进行数学运算。

三、日期运算

日期运算是指对一个日期进行增减操作,得到一个新的日期。在JavaScript中,我们可以使用 set 方法和 get 方法对日期对象进行操作。

1.日期增减操作

const date = new Date();
date.setFullYear(date.getFullYear() + 1);
console.log(date.toISOString()); // 输出:2022-04-30T05:44:51.340Z

使用 set 方法对日期对象进行增减操作。set 方法包括 setFullYear()setMonth()setDate() 等,表示对年、月、日等不同部分进行操作。

2.获取日期部分

const date = new Date();
const year = date.getFullYear();
const month = date.getMonth() + 1;
const day = date.getDate();
console.log(`${year}-${month}-${day}`); // 输出:2021-04-30

使用 get 方法获取日期对象的不同部分。get 方法包括 getFullYear()getMonth()+1getDate() 等,注意 getMonth() 方法返回的是 0~11 之间的整数,需要加 1 才是实际月份。