10/05/2016
Cuando trabajas programando, te pasan, a veces, este tipo de cosas. Esto me pasó programando en PhP
Supongamos, en primer lugar, que creo una cadena de fecha de la siguiente manera:
$dia_cad=date("d-m-Y");
Esto pretende reproducir la introducción de una fecha rellena en un formulario y que ha llegado al "script" por POST, ya que estoy desarrollando un "script" de prueba de una función más compleja que maneja fechas. Entonces utilizo esta cadena para crear un DateTime de la siguiente forma:
$dia=date_create($dia_cad);
Necesito mostrar la fecha que representa ese día en un formato que una base de datos pueda entender. Según una llamada a print_r, descubro que invocando:
$dia->date;
consigo una fecha en formato "AAAA-MM-DD HH:MM:SS" lo que es perfecto. Por tanto, al ejecutar este código:
$dia_cad=date("d-m-Y");
$dia=date_create($dia_cad);
print_r($dia);
echo $dia->date;
se muestra, por ejemplo, como resultado de la última línea "2015-07-25 11:11:11".
Elimino la línea de print_r($dia) y veo que nada funciona. La línea echo $dia->date; no devuelve nada. Tras una media hora de revisar, vuelvo a invocar print_r($dia) para ver si esa variable se vacía por algún motivo raro. Y vuelve a funcionar. Y al rato lo descubro:
¡¡Si no utilizo previamente print_r, $dia->date no devuelve nada!!
La solución es sencilla. En vez de la última línea, si quiero una cadena de fecha en el formato que quiera a partir de un DateTime, invoco simplemente:
$dias->format('Y-m-d H:i:s');
Bastante curioso.