react-time-input
Version:
A simple react component for select time in format HH:mm
39 lines (28 loc) • 1.08 kB
JavaScript
export const isValid = (val) => {
const regexp = /^\d{0,2}?\:?\d{0,2}$/;
const [hoursStr, minutesStr] = val.split(':');
if (!regexp.test(val)) {
return false;
}
const hours = Number(hoursStr);
const minutes = Number(minutesStr);
const isValidHour = (hour) => Number.isInteger(hour) && hour >= 0 && hour < 24;
const isValidMinutes = (minutes) => (Number.isInteger(minutes) && hours >= 0 && hours < 24) || Number.isNaN(minutes);
if (!isValidHour(hours) || !isValidMinutes(minutes)) {
return false;
}
if (minutes < 10 && Number(minutesStr[0]) > 5) {
return false;
}
const valArr = val.indexOf(':') !== -1
? val.split(':')
: [val];
// check mm and HH
if (valArr[0] && valArr[0].length && (parseInt(valArr[0], 10) < 0 || parseInt(valArr[0], 10) > 23)) {
return false;
}
if (valArr[1] && valArr[1].length && (parseInt(valArr[1], 10) < 0 || parseInt(valArr[1], 10) > 59)) {
return false;
}
return true;
}