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());
Tags : javascript