Icono del sitio Andrés Ledo

Tutorial PHP Date for Dummies

php date funcion

En cualquier lenguaje de programación el tratamiento de fechas conlleva quebraderos de cabeza, algo con lo que tratamos a diario siempre acaba dando problemas…

En este tutorial te voy a enseñar a cómo poner una fecha en PHP con la función Date, no te puedo asegurar que sea un camino fácil, pero te lo intentaré hacer lo más ameno posible.

¿Qué hace Date en PHP?

Según php.net la función de PHP hace lo siguiente: «Devuelve una cadena formateada según el formato dado usando el parámetro de tipo integer timestamp dado o el momento actual si no se da una marca de tiempo. En otras palabras, timestamp es opcional y por defecto es el valor de time()».

Bueno, cómo seguramente te has quedado igual con esa «explicación», básicamente lo que hace la función Date en PHP es devolverte la fecha en el formato que le indiques y te la devuelve como un string.

Usos más comunes de Date

En php.net tienes la tabla con todos los formatos disponibles, por lo que no me voy a parar a comentarlos todos, simplemente te comentaré cuáles son los más útiles para hispanoparlantes.

Antes de empezar a trabajar con Date debes de definir en que franja horaria te encuentras, básicamente tienes que buscar tu país en este enlace, en el caso de España sería «Europe/Madrid», por lo que definiré la franja horaria escribiendo date_default_timezone_set(‘Europe/Madrid’), también establecere que el idioma es el Español de España con «setlocale(LC_ALL, ‘es-ES’)».

Imprimir el día de la semana

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); echo date("l"); ?>
Lenguaje del código: HTML, XML (xml)

Imprimir la fecha completa con el día de la semana

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); echo date('l jS \of F Y h:i:s A'); ?>
Lenguaje del código: HTML, XML (xml)

Imprimir la fecha en formato Español

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); echo date("d/m/Y"); ?>
Lenguaje del código: HTML, XML (xml)

Imprimir la fecha en formato Americano

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); echo date("Y/m/d"); ?>
Lenguaje del código: HTML, XML (xml)

Comparar dos fechas en PHP

Para acabar el tutorial vamos a solucionar uno de los problemas más frecuentes con las fechas, las condiciones. Por ejemplo, si quisiéramos comprobar que una fecha es más grande que otra, nuestro primer instinto sería hacerlo así:

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); $date1 = '2022-01-01'; $date2 = '2021-01-01'; if($date1 > $date2){ echo "$date1 es más actual que $date2"; }else{ echo "$date2 es más actual que $date1"; } ?>
Lenguaje del código: HTML, XML (xml)

Este código en la mayoría de ocasiones te funcionará, sin embargo, realmente lo que estás comparando son dos strings, por lo que si el formato de la fecha no fuese americano esté código ya no funcionaría, por lo que lo más recomendable sería antes de realizar la comparación es convertir las variables a date.

<?php setlocale(LC_ALL, 'es-ES'); date_default_timezone_set('Europe/Madrid'); $date1 = '01/01/2022'; $date2 = '01/01/2021'; $date1 = DateTime::createFromFormat("d/m/Y", $date1); $date2 = DateTime::createFromFormat("d/m/Y", $date2); if($date1 > $date2){ echo $date1->format('d/m/Y') .' es más actual que ' . $date2->format('d/m/Y'); }else{ echo $date1->format('d/m/Y') . ' es más actual que ' . $date1->format('d/m/Y'); } ?>
Lenguaje del código: HTML, XML (xml)
Salir de la versión móvil