What is an easy way to check if a value is a valid date, any known date format allowed.
For example I have the values 10-11-2009
, 10/11/2009
, 2009-11-10T07:00:00+0000
which should all be recognized as date values, and the values 200
, 10
, 350
, which should not be recognized as a date value. What is the simplest way to check this, if this is even possible? Because timestamps would also be allowed.
Would Date.parse()
suffice?
See its relative MDN Documentation page.
Date.parse
returns a timestamp if string date is valid. Here are some use cases:
// /!\ from now (2021) date interpretation changes a lot depending on the browser
Date.parse('01 Jan 1901 00:00:00 GMT') // -2177452800000
Date.parse('01/01/2012') // 1325372400000
Date.parse('153') // NaN (firefox) -57338928561000 (chrome)
Date.parse('string') // NaN
Date.parse(1) // NaN (firefox) 978303600000 (chrome)
Date.parse(1000) // -30610224000000 from 1000 it seems to be treated as year
Date.parse(1000, 12, 12) // -30610224000000 but days and month are not taken in account like in new Date(year, month,day...)
Date.parse(new Date(1970, 1, 0)) // 2588400000
// update with edge cases from comments
Date.parse('4.3') // NaN (firefox) 986248800000 (chrome)
Date.parse('2013-02-31') // NaN (firefox) 1362268800000 (chrome)
Date.parse("My Name 8") // NaN (firefox) 996616800000 (chrome)