JavaScript проверяет наличие даты - PullRequest
1 голос
/ 29 октября 2010

У меня есть дата в формате ГГММДД. В любом случае я могу проверить это в JavaScript? Под валидацией я имею в виду не более простые вещи, такие как длина, символы и т. Д., А скорее, если дата существует в реальной жизни.

Я надеюсь, что есть более быстрый / лучший способ, чем разбить его на 3 части по 2 символа и проверить каждый по отдельности.

Спасибо.

Ответы [ 3 ]

3 голосов
/ 29 октября 2010

попытайтесь преобразовать его в дату, и если это не удастся, вы получите страшную NaN, тогда вы знаете, что это недопустимая строка даты? Не довольно, но это должно работать

var myDate = new Date(dateString);
// should write out NaN
document.write("Date : " + myDate);

Ваша строка даты должна быть в правильном формате для javascript Я не думаю, что у вас есть в вашем вопросе YYMMDD поддерживается

1 голос
/ 29 октября 2010

Парсер 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;
1 голос
/ 29 октября 2010

Формат YYMMDD не поддерживается Javascript Date.parse, поэтому вам нужно выполнить некоторую обработку, например разбить его на части.

Я бы предложил создать функцию, которая разбивает его на 3 2 строки символов изатем строит дату в американском стиле

MM / DD / YY и пытается проанализировать ее с помощью Date.parse.

Если он возвращает что-либо, кроме NaN, то это действительная дата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...