javascript日期、時間比較
最近又碰到需要比對時間的功能,就順便整理一下自己用的方法。
直接比較
這邊是自己測試的狀況,也許還有其他格式也可以直接用大小處理。
yyyy-mm-dd、yyyy-m-d、yyyy/m/d、yyyy/mm/dd的字串可以直接用大於和小於來比較
if('2021-09-09' >= '2022-01-01'){
console.log('msg');
}
轉成date
let date1 = new Date('2023-06-14');
let date2 = new Date('2023-06-14');
console.log(date1 > date2);
console.log(date1 < date2);
要注意的是這個方法不能比對等於的情況,推測是使用等於時變成比對是否為同樣的date物件
另外可以使用這個確認是否能轉成date,注意這個不保證原本的參數為正常的日期格式與範圍,有可能只是字串有辦法透過函數轉換過去而已
參考https://stackoverflow.com/questions/1353684/detecting-an-invalid-date-date-instance-in-javascript
//d為new date的參數
//例子: let d = new Date("1234-56-78");
function isValidDate(d) {
return d instanceof Date && !isNaN(d);
}
getTime / valueOf()
使用getTime就能夠比對處理相同時間的問題了,valueOf的使用方式則完全相同
let date1 = new Date('2023-06-14');
let date2 = new Date('2023-06-14');
console.log(date1.getTime() > date2.getTime());
console.log(date1.getTime() < date2.getTime());
console.log(date1.getTime() == date2.getTime());
console.log(date1.valueOf() == date2.valueOf());