
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
と同じ理由になります。