10
votes

I have string field which is used to get different values. Some of the values received are dates. Now I need to check if value received is date or not? The date received can be in different formats again.

I tried Date.parse(), it works if format is dd-mm-yyyy hh:mm, but I have some dates received in like (26/05/2015 06:20:57 +00:00).

How do I compare if string is valid date or not?

1
Try looking at moment.js (momentjs.com/docs) its a pretty strong date library. You would be able to try to create a date with any value then check to see if it is valid - Seth McClaine
This may be a duplicate, but the linked dupe has mostly poor answers that simply rely on Date.parse, which is very unreliable for random formats. - RobG
It is fundamental to correctly parsing a date string that you can tell the parser what format it is in (or supply a format you know it will parse correctly). Otherwise, you can just try a sequence of different formats and stop when you get one that "works". Where the year is first, you can be reasonably certain of y-m-d sequence, but where the year is last, the prevalence of the illogical m/d/y sequence means you can't reliably tell if 04/05/2010 is 4 May or April 5. - RobG
@RobG Good point. I added some fresh info in this answer to the linked dupe. - rsp

1 Answers

9
votes

If Date.parse() is not enough for you - but it may be enough - see the documentation at:

then you may try:

It is a library to parse, validate, manipulate, and display dates in JavaScript, that has a much richer API than the standard JavaScript date handling functions.

See also this answer for more libraries and links to tutorials.