проверка формата даты на 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, время: 17:44. |