|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|||||||||||
Валидация даты30.11.2012, 11:21. Показов 22762. Ответов 32
Метки нет (Все метки)
Помогите пожалуйста: как проверить на правильность введенную пользователем дату? формат "д.м.г" варианты с регуляркой не подойдут однозначно, вариант с разбивкой по точкам подходит, но как проверить правильность даты?
Код на подобие такого:
Добавлено через 4 минуты нашел где-то вот такое чудо:
0
|
|||||||||||
| 30.11.2012, 11:21 | |
|
Ответы с готовыми решениями:
32
Валидация даты Валидация кода Не работает валидация |
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||||||
| 30.11.2012, 11:46 | ||||||
|
для формата дд.мм.гггг
1) проверяем, чтобы было 8 цифр и две точки 2) сплитуем по точкам 3) устанавливаем время 4) "вытаскиваем" день, месяц и год 5) "собираем" их в строку через точки (добавляя нули спереди по необходимости) 6) сравниваем с исходной строкой
1
|
||||||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 30.11.2012, 11:52 [ТС] | |
|
угу, а что будет, если пользователь введет 32.12.2013?) получится 01.01.2014
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||||||
| 30.11.2012, 12:13 | ||||||
|
23Alex24, а вы попробуйте
![]()
и именно потому, что 32.12.2013 != 01.01.2014 ---------- вы вообще хоть попытались понять то, что я выше написал аж в целых шести пунктах?
0
|
||||||
|
13440 / 7534 / 829
Регистрация: 09.09.2009
Сообщений: 29,554
|
|
| 30.11.2012, 12:27 | |
|
задействуйте для ввода юзером даты например вот этот скрипт
http://www.rainforestnet.com/d... picker.htm
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
| 30.11.2012, 13:01 | |
|
Dmitry, моя функция полностью удовлетворяет исходному запросу
только вот я просто написал //OK! последней строкой, полагая, что топикстартер САМ пропишет там то, что ему надо при валидной дате но он, видимо, этого не понял ау, замените //ОК! на alert ('Всё хорошо, прекрасная маркиза! Всё хорошо, всё хорошо!');
0
|
|
| 30.11.2012, 13:05 | |
|
Не по теме: в данном случае, имхо, есть два радикально противоположных способа.
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
|
| 30.11.2012, 13:12 | |
|
Dmitry, согласен
однако в топике написано "как проверить на правильность введенную пользователем дату?" и я отвечал на поставленный вопрос
0
|
|
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 30.11.2012, 13:19 [ТС] | |
|
Чудеса, с трудом разобравшись что вы делаете, я наконец понял)) честно говоря выглядит дико, так к слову формат был "д.м.г.", не надо было нули добавлять, ну не суть конечно, да бесспорно оно будет работать,но мне казалось есть более правильный подход))
Добавлено через 1 минуту Хотя возможно без нулей как раз данный способ и не сработал бы=) ну думаю тогда бы вы сравнили отдельно каждое значение числа, месяца и года)
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||||||
| 30.11.2012, 13:24 | ||||||
|
23Alex24, формата д.м.г быть не может
1.1.4 - это какой год? 1004? 2004? или 2014? как минимум формат должен быть д.м.гггг вам надо под этот формат? чтобы проверял и 1.1.2013, и 1.12.2013, и 30.6.2011, и 25.11.2009 ? нет проблем - уберите определение функции a0 и два её вызова:
0
|
||||||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 30.11.2012, 13:29 [ТС] | |
|
под "д.м.г" я понимаю формат "d[d].m[m].y[yyy]" чтоб мозги пользователю не парить, пусть как хочет так и вводит, хочет 01.01.0001, хочет 1.1.1, хочет 01.01.201 ну и т.д.) просто убрать вызов функции а не поможет, если пользователь ввдеет 8.8.2012, то сравнится с 08.08.2012 и выдаст ошибку) там придется именно сравнивать по значениям даты, месяца, года)
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 30.11.2012, 13:30 | ||
|
как проверить валидность даты, если ГОД этой даты не определён? в каком-то "нулевом" году есть 29 февраля, а в каком-то - нет этого числа ну и как проверить валидность? -------- в предыдущем коде я забыл проверку регуляркой изменить if (!/^\d{1,2}\.\d{1,2}\.\d{4}$/.test (str)) {alert ('Error, unformat'); return}
0
|
||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
||||||
| 30.11.2012, 13:47 [ТС] | ||||||
|
ну вот именно, что придется проверять как-то не по хорошему, на основании увиденных вариантов получилось что-то на подобие этого:
0
|
||||||
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 30.11.2012, 13:52 | ||
|
а мы живём по григорианскому, где не каждый четвёртый год является високосным
0
|
||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|
| 30.11.2012, 13:58 [ТС] | |
|
эм, вы ничего не путаете? посмотрите в календарь на компе, там каждые 4 года же так...?
0
|
|
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||
| 30.11.2012, 14:09 | ||
|
нет, я ничего не путаю
1
|
||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
||||||
| 30.11.2012, 14:22 [ТС] | ||||||
|
Очень интересно, не знал, надо будет подогнать и под эти ситуации=)
Добавлено через 10 минут Ну тогда метод будет таким:
0
|
||||||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
||||||
| 03.12.2012, 11:23 [ТС] | ||||||
|
Чуть чуть оптимизировал:
1
|
||||||
|
супермизантроп
3941 / 2979 / 692
Регистрация: 18.04.2012
Сообщений: 8,629
|
||||||
| 03.12.2012, 11:56 | ||||||
|
не-а, мой скрипт всё-равно "более лучший"
![]()
0
|
||||||
|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|||||||||||
| 03.12.2012, 12:03 [ТС] | |||||||||||
|
С опечатками=)) вот норм вариант:
На счет вашего решения: 1)Видимо читабельность кода вас вообще не волнует?) 2)вы вызываете парс инт только для того, чтобы ваш метод сработал, хотя проверив регуляркой мы уже уверены, что у нас там цифры и все ок=) 3)Ваш метод я бы переписал так:
0
|
|||||||||||
| 03.12.2012, 12:03 | |
|
Помогаю со студенческими работами здесь
20
Валидация формы Json и валидация Валидация формы
Валидация формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|
Фото: Daniel Greenwood
kumehtar 13.11.2025
|