Проверка на время - PullRequest
       18

Проверка на время

0 голосов
/ 05 декабря 2018

У меня есть поле формы, в котором может быть дата и время.Мне нужно подтвердить наличие даты и времени.

 <input type="text" name="transdate" ... />

Я могу использовать isDate(form.transdate), чтобы проверить, есть ли дата, но она не проверяет, есть ли время.Хотелось бы, чтобы была функция isTime().

Приложение

В полях даты и времени можно сделать

enter image description here

Эти поля объединяются через

 date_cat = "#form.trans_date# #form.trans_date_h#:#form.trans_date_m# #form.trans_date_t#";

Когда я запускаю этот код:

cat: #date_cat# isValid(date): #isValid('date', date_cat)# isValid(time): #isValid('time', date_cat)#

Я получаю

cat: 12 /05/2018: 24 вечера isValid (дата): ДА isValid (время): ДА

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Некоторые люди ненавидят регулярные выражения.Я люблю их.Почему бы просто не проверить составную строку?

dtRegEx = "^(0[1-9]|1[0-2])/(0[1-9]|[1-2][0-9]|3[0-1])/[1-9][0-9]{3} (0[0-9]|1[0-2]):[0-5][0-9] (am|pm)$";

if (reFind(dtRegEx, date_cat) and isDate(date_cat)) {
    // valid datetime
} else {
    // invalid datetime
}

Распределение по RegEx

^
    string has to start with the whole pattern

(0[1-9]|1[0-2])
    month in range from 01 to 09 or 10 to 12

/
    date delimiter

(0[1-9]|[1-2][0-9]|3[0-1])
    day in range from 01 to 09, 10 to 29 or 30 to 31

/
    date delimiter

[1-9][0-9]{3}
    year in range from 1000 to 9999

space
    space, literally

(0[0-9]|1[0-2])
    hour in range from 00 to 09 or 10 to 12

:
    time delimiter

[0-5][0-9]
    seconds in range from 00 to 59

space
    space, again

(am|pm)
    the meridiem stuff you guys from US and UK like so much :P

$
    string has to end with the whole pattern

Обратите внимание, что из-за приведенного выше паттерна вы все равно можете получить недопустимые диапазоны дней, такие как 02/31/2018вот почему вы все равно должны проверить с isDate().

0 голосов
/ 05 декабря 2018

Вот как я к ней обращался, я проверял поля перед объединением

if (form.trans_date_h == "" || form.trans_date_m == "" || form.trans_date_t == "") {
   // error handling here

Затем сделал объединение

date_cat = "#form.trans_date# #form.trans_date_h#:#form.trans_date_m# #form.trans_date_t#";
...