Fechas PHP: aprende su funcionamiento en cualquier formato
A la hora de crear tu web, toda aplicación debe trabajar con fechas y ya desde PHP 5.3 existen métodos que realmente mejoran las prestaciones y posibilidades de esta operativa. En este artículo, explicamos cómo utilizar el objeto DateTime, la forma más versátil y cómoda de trabajar con fechas en PHP en cualquier formato de presentación. Convertir fechas, además, es algo tan común como crearlas. Es el caso, por ejemplo, cuando trabajamos con MySQL y queremos recuperar una fecha almacenada en un campo de tipo date. El formato de MySQL no es un formato que se use para la presentación de fechas en ningún idioma y forzosamente la tendremos que convertir. Otro caso puede ser cuando tenemos la fecha escrita en inglés y la queremos mostrar en español, ya que los días y los meses se anotan en orden diferente, y requieren su conversión.
Para todo esto, se dispone de unas funciones que son la navaja suiza de las fechas, ya que nos permiten crear las fechas desde cualquier situación y transformarlas en cualquier formato deseado. El procedimiento es el siguiente:
- Obtener un objeto DateTime a partir de cualquier entrada. El formato con el que esté escrita es indiferente.
- Obtener como salida una representación de la fecha en cualquier formato deseado.
Crear el objeto DateTime
Partimos de una entrada que podría tener diversa forma. Por ejemplo, una fecha que podría venir de una base de datos MySQL, que tendría esta forma:
$fecha = '2016-08-23';
No te preocupes si la fecha no está realmente en este formato que ves en la cadena anterior. Nuestra particular navaja suiza será capaz de interpretar casi cualquier cosa. Ahora es donde entra en juego la función de PHP que nos permite crear el objeto DateTime.
$obj_fecha = date_create_from_format('Y-m-d', $fecha);
Como puedes comprobar, la magia está en que hemos indicado el formato en el que está escrita nuestra fecha para que PHP no tenga dudas a la hora de interpretar sus distintos componentes. Los formatos se entregan en una notación estándar y bien conocida por cualquier desarrollador. Podemos documentarnos en la propia página del manual de PHP, donde observarás además que también se puede invocar a esta función al estilo de objetos: https://php.net/manual/es/datetime.createfromformat.php
Es habitual también crear fechas con el día actual. Para ello, podemos usar el siguiente código:
$obj_fecha = date_create();
Convertir fechas a cualquier formato
Ahora que tenemos nuestra fecha en un objeto, podemos convertirla para que se represente en cualquier formato que deseemos. La función que nos facilita esta labor se llama date_format().
$fecha_con_formato = date_format($obj_fecha, 'd/m/Y');
Como puedes ver, se entrega el formato deseado, con una notación similar a la que se utilizó para conseguir el objeto. En el ejemplo anterior la fecha se entregaría tal como se escribe en español, pero podríamos construir cualquier otro formato deseado con facilidad.
En resumen, con estas funciones el tratamiento de fechas se convierte en una tarea sencilla, que facilita que nuestras aplicaciones utilicen fechas en cualquier formato y visualizarlas también de la manera o maneras que más nos interese según cada frontal. Por ejemplo, en sites para diferentes mercados y lenguajes.
En la documentación de PHP encontrarás muchas otras funciones de DateTime que hacen cosas más específicas y te resultarán resultarán de utilidad en otros casos de uso.