みかづきブログ・カスタム

基本的にはちょちょいのほいです。

JavaScriptでHH:MMを比較する ⏰

HH:MMと、形式が揃っていれば、

const start = '10:30';
const end = '16:00';

console.log(start < end); // true
console.log(start > end); // false
console.log(start === end); // false

という感じで、比較できることを知りました。
いままで、わざわざ適当な日付をつけてDate型に変換したものをNumber型に変換して比較してました。

const start = '10:30';
const end = '16:00';

console.log(
  Number(new Date(`2025-07-16T${ start }`))
  <
  Number(new Date(`2025-07-16T${ end }`))
); // true
console.log(
  Number(new Date(`2025-07-16T${ start }`))
  >
  Number(new Date(`2025-07-16T${ end }`))
); // false
console.log(
  Number(new Date(`2025-07-16T${ start }`))
  ===
  Number(new Date(`2025-07-16T${ end }`))
); // false

これはJavaScriptの文字列の比較が、Unicode順に並べた時に先に来るか後に来るかで判定していることが原因で、

console.log('a' < 'b');  // true

と同じ理由になります。