Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > проверка формата даты


Автор: kid_a 18.12.2007, 13:59
Необходимо проверять формат даты. Должен быть - 18.12.2007 00:00 или 18.12.2007 . в таком случае запрос выполняется корректно.

Код

if ($_POST['date_e'.$i]) 
     { 
     $date_e=$_POST['date_e'.$i]; 
     } 
     else
     { 
     $date_e="01.01.1900 00:00"; 
     } 





Дату в БД добавляю в запросе.
Код

... set date_e =convert(datetime,'".$date_e."', 104)


Как проверить, что пользователь ввел неверный формат (допустим, 18/12/07)? 

Автор: Ant88 18.12.2007, 14:54
Регулярные выражения использовать наверное.
Как то так...
Код

if(eregi("^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$", $date_e)){
 ... // если соответствует шаблону xx.xx.xxxx
}

Автор: Feldmarschall 18.12.2007, 15:00
наверное, стоит проверять не только формат, но и валидность даты.
не думаю, что автору подойдет 99 декабря =)

Автор: skyboy 18.12.2007, 15:25
Цитата(Feldmarschall @  18.12.2007,  14:00 Найти цитируемый пост)
наверное, стоит проверять не только формат, но и валидность даты.

например, при помощи http://ua2.php.net/manual/ru/function.checkdate.php
для проверки формата на стороне РНР можно парсить строку по шаблону при помощи http://ua2.php.net/manual/ru/function.strptime.php и смотреть, не вернет ли функция false.

Автор: Anarki 18.12.2007, 16:34
Если дата проверяется только для корректной вставки в БД(причем пофиг какая дата там была введена, главное чтобы запрос прошел). Тогда например, сделать так, получить unixtimestamp через http://php.net/strtotime, затем это значение подставить в http://php.net/date и указать верный формат... возвращенное строковое значение от date уже вставлять в бд. Конечно не забыть обработать ситуацию когда strtotime вернула -1.

Автор: SelenIT 18.12.2007, 16:50
Цитата(Anarki @  18.12.2007,  16:34 Найти цитируемый пост)
через strtotime

Для того формата, который нужен, жестоко обломимся. А вот второй вариант skyboя должен сработать.

Автор: kid_a 19.12.2007, 07:50
Call to undefined function strptime() . php5.2 windows

Автор: skyboy 19.12.2007, 12:20
очень странно.
Цитата(php.net)

strptime

(PHP 5 >= 5.1.0)

strptime — Parse a time/date generated with strftime()

просто обязано работать.
а попробуй другую версию. вдруг, именно в той сборке были косяки. 
хотя я сильно сомневаюсь, что дело в версии.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)