Проверяем, что дата соответствует заданному формату

Допустим, мы хотим проверить, что введенная пользователем дата соответствует формату Y-m-d.

Скопировано
$input_date = '2016-01-12';
$date = DateTime::createFromFormat( 'Y-m-d', $input_date );
if( ! $date || $date->format( 'Y-m-d' ) != $input_date ) {
echo 'Дата не верна';
} else {
echo 'Дата верна';
}
Показать код

Примеры для разных значений дат:

2016-05-25  - true
2004-02-29  - true
2016-05-25s - false
2016-05-1   - false
2016-05-35  - false
2016.05.25  - false
2016/05/25  - false
2005-02-29  - false
(пусто)     - false