I am working on a form widget for users to enter a time of day into a text input (for a calendar application). Using JavaScript (we are using jQuery FWIW), I want to find the best way to parse the text that the user enters into a JavaScript Date()
object so I can easily perform comparisons and other things on it.
I tried the parse()
method and it is a little too picky for my needs. I would expect it to be able to successfully parse the following example input times (in addition to other logically similar time formats) as the same Date()
object:
- 1:00 pm
- 1:00 p.m.
- 1:00 p
- 1:00pm
- 1:00p.m.
- 1:00p
- 1 pm
- 1 p.m.
- 1 p
- 1pm
- 1p.m.
- 1p
- 13:00
- 13
I am thinking that I might use regular expressions to split up the input and extract the information I want to use to create my Date()
object. What is the best way to do this?
Don't bother doing it yourself, just use datejs.
I wasn't happy with the other answers so I made yet another one. This version:
undefined
on invalid input such as "13:00pm" or "11:65"localDate
parameter, otherwise returns a UTC time on the Unix epoch (Jan 1, 1970).1330
(to disable, make the first ':' required in the regex)^\s*
in the regex)Edit: it's now a package including a
timeToString
formatter:npm i simplertime