Introducción a DateTime en php

Desde los inicios de php siempre que hemos querido trabajar con fechas y horas hemos estado obligados a utilizar las funciones de PHP time() y date().
Afortunadamente para todos nosotros internet está lleno de documentación de estas dos funciones. Pero con la llegada de PHP 5 en realidad 5.2.0 y entro en juego la clase DateTime esta clase nos permite trabajar con fechas y horas en PHP sin demasiadas complicaciones.
Pero tenemos que tener muy claro que la base de datos en MySQL el campo de la fecha no puede ser DATE si no DATETIME

Como trabajar con DateTime en php

El formato valido en MySQL para insertar una fecha es YYY-MM-dd HH:mm:ss si tu variable PHP no tiene ese formato, al introducir el dato en la base de datos MySQL se introducirá una fecha y hora no valida tipo 0000-00-00 00:00:00
Cuando recuperamos una fecha y hora con PHP de la base de datos de SQL esta siempre será una cadena “string” vamos a suponer que hemos recuperado la fecha y hora la hemos almacenado en una variable de PHP $FechaRecuperada=”2017-06-21 01:02:03” como todos sabemos las fecha guardadas en PHP se guardan en formato americano, año-mes-dia.
Trabajar con fechas y horas en PHP puede resultar muy complicado ya que tienes que tener muy claro cómo funciona time() e date() pero gracias a la clase DateTime todo esto cambia, mira el siguiente ejemplo tomando como punto de partida la variable PHP que hemos declarado antes.

<?php
$FechaRecuperada = "2017-05-21 01:02:03"; // variable recuperada de la bbdd
$clase_DateTime = DateTime::createFromFormat('Y-m-d H:i:s', $FechaRecuperada); //  convierte la string en un formato valido de fecha
echo $cadena_nuevo_formato = date_format($clase_DateTime, "d/m/Y H:i:s"); 

Una vez convertido a fecha con la función date_format() podemos hacer lo que queramos con ella, en realidad mostros lo único que queremos es convertir a horario europeo d/m/Y es tan fácil como se ve en el ejemplo

Notas finales sobre DateTime

Como veis es tremendamente fácil trabajar con fechas y horas en PHP de esta manera, solo tenemos que tener en consideración que las fechas son guardadas en formato americano y que siempre tenemos que trabajar con este formato para evitar problemas.