Проверка правильности ввода пользователем даты и времени

ElenaNF

Новичок
Проверка правильности ввода пользователем даты и времени

Добрый день. У меня на форме есть два окна ввода: Дата и Время. Как проверить, правильная ли дата и формат даты?
 

ElenaNF

Новичок
я так понимаю форма я так смогу проверить, а корректность даты? т.е.чтобы не было 40.01.2000
 

Marquis

Новичок
ElenaNF
для того что бы определить правильно или нет проверь свою же строку "40.01.2000" этой регуляркой.
 

ElenaNF

Новичок
проверка этой регуляркой всегда выдает ошибку, даже на правильных дата, что не так?

-~{}~ 11.07.06 13:58:

а checkdate не проверяет формат ввода.
 

WP

^_^
PHP:
$date = '40.01.2000';
var_dump(strtotime($date) !== FALSE);
// bool(false)
$date = '30.01.2000';
var_dump(strtotime($date) !== FALSE);
// bool(true)
-~{}~ 11.07.06 14:45:

> '/[0-9]{1,2}.[0-9]{1,2}.[0-9]{4}/' - это правильно?
Не правильно.
Во-первых, нужно явно заякорить шаблон, т.е. ~^...$~.
Во-вторых экранировать точки.
Затем описать формат - '~^0?(\d|[0-2]\d|3[0-2])\.0?(\d|1[0-2])\.(\d{4})$~
Запускаем:
PHP:
$string = '31.1.2000';
function elena_checkdate($string)
{
 $result = preg_match( '~^0?(\d|[0-2]\d|3[0-2])\.0?(\d|1[0-2])\.(\d{4})$~',$string,$matches);
// var_dump($result,$matches);
 return !!$result;
}
var_dump(elena_checkdate('30.12.2000')); // true
var_dump(elena_checkdate('40.12.2000')); // false
 

WP

^_^
Фанат
Смысл дошел, но я не понимаю почему не нужно проверять. Ведь могут ввести дату "Фанат", и нужно вывести сообщение о том что дата введена не верная. Если формат обязательно должен быть фиксированным - регулярным выражением, а если он не важен - strtotime.
 

Splurov

Новичок
WP
PHP:
<?php

function elena_checkdate($string) {
	return (bool)preg_match( '~^0?(\d|[0-2]\d|3[0-2])\.0?(\d|1[0-2])\.(\d{4})$~',$string);
}
var_dump(elena_checkdate('29.02.2006')); // true
var_dump(elena_checkdate('31.06.2006')); // true

var_dump(strtotime('29.02.2006')!==false); // true
var_dump(strtotime('31.06.2006')!==false); // true

var_dump(checkdate(02, 29, 2006)); // false
var_dump(checkdate(06, 31, 2006)); // false

?>
 

WP

^_^
Splurov
А где strtotime?

-~{}~ 11.07.06 16:41:

p.s. я же не зря взял в скобки части выражения, можно их скормить checkdate.
 

Фанат

oncle terrible
Команда форума
чтобы скормить checkdate, НЕ НУЖЕН заумный рег.
достаточно примитивного експлода.
 
Сверху