Если у вас есть строка времени без даты, вы можете преобразовать время в общий знаменатель, скажем, в минуты, а затем сравнить его.Например,
/* Convert time string to minutes
* @param {string} time: format hh:mm am/pm
* @returns {number} time converted to minutes
*/
function timeToMins(time) {
var b = time.split(/[:\s]/);
return b[0]%12*60 + +b[1] + (/pm\s*$/i.test(time)? 720 : 0);
}
// E.g.
[['10 : 23pm','10:23am'], // Tolerant of differing whitespace
['12:12 am','12:12 pm'],
['12:12 pm','12:12 am ']
].forEach(times => console.log(
`${times[0]} < ${times[1]}? ${timeToMins(times[0]) < timeToMins(times[1])}`
)
);
Хотя вышеприведенное несколько терпимо по отношению к различным пробелам, вы должны добавить проверку в строку, чтобы подтвердить формат перед обработкой и вернуть разумное сообщение, если это не требуемый формат.Вы также можете расширить его для поддержки дополнительных секунд и долей секунд.