проверка формата даты на JavaScript, помогите простейшим примером
Подскажите на конкретном примере как реализовать проверку формата даты, например mm/dd/yyyy или mm/dd/yy. Спасибо.
|
То есть? является ли некая строка датой в данном формате?
проверяйте регулярным выражением или еще можно как-нить так ппопробовать: try { myDate = new Date(inputStr); alert('Это дата') } catch(e) { alert("Это не дата") } |
Да, нужно чтобы дата могла быть только в таких форматах. Как проверить регулярным выражением?
|
|
в поле введена дата формата mm/dd/yyyy или mm/dd/yy, по нажатии кнопки нужно проверить соотвествует ли данная строка этим форматам. )
|
Ну, в протейшем случае --
/\d\d\/\d\d\/\d\d/-- две цифры, слэш, две цифры, слэш, две цифры. Но под это выражение подходит и строка "41/56/50" -- что не является датой, так что вам придется вводить дополнительные проверки, или усложнять регулярку. Так что советую все же сразу проверять путем попытки создания обьекта Date. |
try { myDate = new Date(inputStr); alert('Это дата') } catch(e) { alert("Это не дата") } В данном случае я не попадаю в блок catch(), т.к. myDate принимает значение InvalidDate. |
А, вот оно как... прошу прощения.
Ну тогда так: if ('Invalid Date' == (var myDate = new Date(inputStr))) { alert('Это не дата:('); } //нормальная обработка... или самому бросать exception в блоке try: try { myDate = new Date(inputStr); if ('Invalid Date' == myDate) { throw 'Это не дата'; } } catch(e) { alert(e); // эксепшен может быть любым обьектом, в т.ч. и строкой return; // выходим из функции } finally { //обработка нормального хода событий } Впрочем, вариант с try-catch, скорее всего, несколько медленнее. |
try { myDate = new Date(inputStr); if ('Invalid Date' == myDate) { throw 'This is not date'; } else alert('this is date '+inputStr); } catch(e) { alert(e); return; } Передаю аргументом строку '05/19/200812', получаю 'this is date 05/19/200812'. Наверное так и придется с регулярными выражениями пробовать, пока не понимаю в них ничего... :( |
tangens, гм, да...
Но с другой стороны -- двести тыщ восемьсот двенадцатый год -- вполне легальная дата, просто в далеком будущем:) Тогда в лоб: var arrDate = inputStr.split('/'); //проверяем arrDate[0] -- должно быть больше 0 и меньше 32 //проверяем arrDate[1] -- должо быть больше 0 и меньше 13 // если arrDate[1] == 2 (февраль), то // если arrDate[2] делится на 4, но не равно 0 (вискосный год), то // arrDate[0] должно быть меньше 30, в противном случае -- меньше 29. Ну и плюс проверка, попадает ли год в нужные вам интервалы... по регекспам: http://phpclub.ru/detail/article/regexp_1 http://phpclub.ru/detail/article/regexp_2 Там для php, но главное -- синтаксис их самих. Помедитируйте на эти статьи. |
Часовой пояс GMT +3, время: 16:58. |