Валидация даты на PHP. Как лучше реализовать?

Есть дата в формате YYYY-MM-DD. Столкнулся с проблемой проверки ее достоверности. Первое, что пришло на ум, это регулярные выражения, как-то так...

if (preg_match("/([12]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[12]\d|3[01]))/", $date)) {
...

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

Как это лучше всего реализовать?


Ответы (1 шт):

Автор решения: Alexey

Вот, вроде, нашел вариант:

function validateDate($date, $format = 'Y-m-d') {
    $d = DateTime::createFromFormat($format, $date);
    return $d && $d->format($format) == $date;
}

var_dump(validateDate('2012-02-03', 'Y-m-d'));

Даже checkdate() не понадобилась :)

→ Ссылка