Парсер Date
в JavaScript довольно бесполезен. Фактические форматы, которые он принимает, сильно различаются в разных браузерах; единственными форматами, гарантированно работающими по стандарту ECMAScript, являются те форматы, которые создаются методами реализации toString
и toUTCString
. В пятом издании ECMAScript вы также получите формат ISO-8166, который ближе к вашему формату, но все еще не совсем.
Итак, лучшее решение, как правило, разбирать его самостоятельно.
var y= parseInt(s.slice(0, 2), 10)+2000;
var m= parseInt(s.slice(2, 4), 10)-1;
var d= parseInt(s.slice(4, 6), 10);
var date= new Date(Date.UTC(y, m, d));
Теперь у вас есть Date
объект, представляющий дату ввода в UTC. Но этого недостаточно, потому что конструктор Date
позволяет использовать фиктивные месяцы, например, 13, или дни, например, 40. Таким образом, чтобы проверить, был ли данный день реальным, вернитесь обратно в год / месяц / день и сравните:
var valid= date.getUTCFullYear()===y && d.getUTCMonth()===m && d.getUTCDate()===d;