|
644 / 198 / 5
Регистрация: 24.07.2010
Сообщений: 1,315
|
|||||||||||
Валидация даты30.11.2012, 11:21. Показов 22932. Ответов 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
|
||||||
|
13441 / 7534 / 831
Регистрация: 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 и валидация Валидация формы
Валидация формы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут
Суть:
- Группа наркоманов из 10 человек.
- Только один инфицирован ВИЧ.
- Колются одной иглой.
- Колются раз в день.
- Колются последовательно через. . .
|
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
|
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
|
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . .
а удачный момент так и не приходит.
|
|
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица.
Задача: зафиксировать три левых колонки в отчете.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
/ / . . .
|
Настройки VS Code
Loafer 13.04.2026
{
"cmake. configureOnOpen": false,
"diffEditor. ignoreTrimWhitespace": true,
"editor. guides. bracketPairs": "active",
"extensions. ignoreRecommendations": true,
. . .
|
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2.
Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива.
Было так:. . .
|
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2.
Задача: реализовать контроль корректности заполнения дат назначения. . .
|