Проверьте правильность печати PHP datetime?

Есть ли способ проверить, правильно ли установлена ​​метка даты в PHP?

В настоящее время я использую yyyy-mm-dd hh:mm:ss в MySQL и хотел бы обеспечить, когда пользователь предоставит отметку даты / времени в форме, которая соответствует правильному формату.

Solutions Collecting From Web of "Проверьте правильность печати PHP datetime?"

[пока кто-то не приходит с хорошим (bugfree), work checkdate () example] Я использую эту функцию:

 <?php function validateMysqlDate( $date ){ if (preg_match("/^(\d{4})-(\d{2})-(\d{2}) ([01][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$/", $date, $matches)) { if (checkdate($matches[2], $matches[3], $matches[1])) { return true; } } return false; } // check it: $a = validateMysqlDate('2012-12-09 09:04:00'); $b = validateMysqlDate('20122-12-09 09:04:00'); $c = validateMysqlDate('2012-12_09 09:04:00'); $d = validateMysqlDate(''); var_dump( $a ); var_dump( $b ); var_dump( $c ); var_dump( $d ); ?> 

и btw: checkdate () вернет true для $ b, хотя это не действительное mysql datetime

Вы можете использовать функцию checkdate() для проверки действительности даты.

http://php.net/manual/en/function.checkdate.php

Вы также можете передать все части своей метки времени в mktime() и если возвращается false или -1 (в зависимости от версии PHP), это недействительная дата

http://www.php.net/manual/en/function.mktime.php

Это дублирующий вопрос. Для дополнительной дискуссии и ответов см. MySQL: как проверить, является ли строка действительной DATE, TIME или DATETIME

Попробуйте разобрать данную строку, а затем проверить, что она указана в тот же день, который вы ввели, обратите внимание на следующее:

 $dt = DateTime::createFromFormat('Ymd H:i:s', '2011-01-32 12:00:00'); echo $dt->format('Ymd H:i:s'); // outputs 2011-02-01 12:00:00 

НТН.