在业务中可能会遇到各种各样的需求,比如最近遇到一个:根据两个日期时间的先后顺序去处理业务。在此记录下问题并进行总结,以便后续翻阅。
1、两时间格式相同
var date1 = new Date("2023-4-6");
var date2 = new Date("2022-5-1");
var result = date1 > date2;
console.log(result); // true
2、两时间格式不同
1、Date.parse()
时间格式不同需要先将时间转成毫秒数,再进行比较
var date1 = new Date("2023-4-6");
var date2 = new Date("2022/4/6");
var result = Date.parse(date1) > Date.parse(date2);
console.log(result); // true
Date.parse() 方法解析一个表示某个日期的字符串,并返回从 1970-1-1 00:00:00 UTC 到该日期对象(该日期对象的 UTC 时间)的毫秒数,如果该字符串无法识别,或者一些情况下,包含了不合法的日期数值(如:2015-02-31),则返回值为 NaN。
2、Data.getTime()
let date1 = new Date();
let date2 = "09/04/2023";
console.log(date1); //"2023-04-06T06:58:54.568Z"
console.log(new Date(date2)); // "2023-09-03T16:00:00.000Z"
let _date1 = new Date(date1).getTime();
let _date2 = new Date(date2).getTime();
console.log(_date1) // 1680764639582
console.log(_date2) // 1693756800000
if (_date1 < _date2) {
console.log(`${date1} is less than ${date2}`);
} else if (_date1 > _date2) {
console.log(`${date1} is greater than ${date2}`);
} else {
console.log(`Both dates are equal`);
}
Date.parse() 与 Date.getTime() 说到底都是将时间转成毫秒再进行比较的方式,使用哪种方式都是可以的。
var date = new Date('2023-04-06 14:53');
console.log(date.getTime()); // 1680763980000
console.log(Date.parse(date)) // 1680763980000
评论区