Time Validator: What Counts As A Real Clock Reading
A time string looks like the simplest thing in a data set, right up to the moment a form accepts 25:30, a spreadsheet turns 1430 into a number, or an import silently reinterprets 2:30 as half past two in the morning. This time validator checks a string against the actual 24-hour clock and tells you which field broke: not "invalid time", but "there is no hour 25 on a 24-hour clock, which runs 00 to 23".
It matches explicit patterns rather than handing the string to the browser's date parser, because that parser is built to be forgiving — it will normalise, guess and roll over exactly the values you are trying to catch. Four shapes are recognised: ISO 8601 times with optional fractions and offsets, loose clock times with single-digit hours or a dot separator, 12-hour times written with AM or PM, and compact military-style values like 1430.
Two extra rules sit on top of the clock check, because a real time is not always an acceptable one. Turn on seconds are required when a downstream system will not take 14:30, and set an earliest and latest bound when the value has to land inside opening hours, a shift or a booking window. For dates rather than times, use the Date Validator; to convert between 12- and 24-hour notation, the 24h to 12h Converter is quicker.