Depois de um tempo resolvi atualizar alguns dos meus snippets, um que muitos programadores quando vão trabalhar com data e hora no PHP não tem uma solução definitiva que realmente funcione e atenda a todas as suas necessidades. Não vou entrar muito em detalhe sobre como cada função funciona, para isso temos o book do PHP.

Este é um método bem pequeno e simples para se compreendido, nele você informa em que padrão esta a sua data e ele faz a validação para você.

<?php
function validaData($date, $format = 'Y-m-d H:i:s')
{
    if (!empty($date) && $v_date = date_create_from_format($format, $date)) {
        $v_date = date_format($v_date, $format);
        return ($v_date && $v_date == $date);
    }
    return false;
}
/*
 * Exemplos
 */
var_dump(validaData('2014-02-28 12:12:12')); # true
var_dump(validaData('2014-02-30 12:12:12')); # false
var_dump(validaData('2015-06-26', 'Y-m-d')); # true
var_dump(validaData('2015/06/26', 'Y-m-d')); # false
var_dump(validaData('28/02/2014', 'd/m/Y')); # true
var_dump(validaData('30/02/2014', 'd/m/Y')); # false
var_dump(validaData('14:50', 'H:i')); # true
var_dump(validaData('14:77', 'H:i')); # false
var_dump(validaData(14, 'H')); # true
var_dump(validaData('14', 'H')); # true

Com este método não precisamos ficar dando milhões de explode e implode para fazer a formatação da data, com algumas funções nativas do PHP 5 isso ficou muito mais fácil veja.

<?php
function converteData($format, $to_format, $date, $timezone = null)
{
    if (!empty($date)) {
        $timezone = $timezone ? $timezone : new DateTimeZone(date_default_timezone_get());
        $f_date = date_create_from_format($format, $date, $timezone);
        return date_format($f_date, $to_format);
    }
    return false;
}
 
/*
 * Exemplos
 */
var_dump(converteData('d m Y', 'Y-m-d', '06 02 2025')); //2025-02-06
var_dump(converteData('d-m-Y', 'm/d/Y H:i', '06-02-2014')); //02/06/2014 12:39
var_dump(converteData('Y-m-d', 'l F Y  H:i', '2014-02-06')); //Thursday February 2014  12:38

Estas duas funções são compatíveis com o PHP 5 >= 5.3

Deixem seu comentário e aceito dicas para melhorias destes métodos.