Trabajo con fechas y horas en PHP: de la A a la Z — guía completa

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con fechas y horas en PHP: de la A a la Z



Trabajar con fechas y horas es una de las tareas más comunes en el desarrollo web. Ya sea para mostrar la fecha de publicación, calcular la edad de un usuario, registrar eventos o crear un calendario, PHP proporciona un conjunto de herramientas potente y flexible. En este artículo, analizaremos todos los aspectos: desde funciones simples hasta el enfoque orientado a objetos con la clase DateTime, incluyendo zonas horarias y ejemplos prácticos.



Funciones básicas: date() y time()



El conjunto básico de funciones para trabajar con fechas incluye time() y date(). La función time() devuelve la marca de tiempo Unix actual (el número de segundos desde el 1 de enero de 1970). La función date() formatea esta marca en un formato legible para humanos.



Obtener la fecha y hora actuales

La forma más sencilla de mostrar la fecha actual:

<?phpecho date('Y-m-d H:i:s'); // 2025-04-10 15:30:45?>


Formateo con date()

La función date() acepta dos parámetros: el formato y una marca de tiempo opcional. Los caracteres de formato más populares son:

  • d — día del mes (01–31)
  • m — mes (01–12)
  • Y — año en formato de 4 dígitos
  • H — horas en formato de 24 horas (00–23)
  • i — minutos (00–59)
  • s — segundos (00–59)

Ejemplo de salida con texto en español:

<?phpecho 'Hoy es ' . date('d.m.Y') . ', hora ' . date('H:i');// Hoy es 10.04.2025, hora 15:30?>


Clase DateTime: enfoque orientado a objetos

Para operaciones complejas, se recomienda usar la clase DateTime. Es intuitiva, admite zonas horarias y simplifica la manipulación de fechas.



Creación de un objeto DateTime

Se puede crear un objeto de diferentes maneras:

<?php// Fecha y hora actuales$now = new DateTime();echo $now->format('Y-m-d H:i:s'); // 2025-04-10 15:30:45

// Fecha específica$date = new DateTime('2025-12-31 23:59:59');echo $date->format('d.m.Y'); // 31.12.2025

// Usando un formato relativo$nextWeek = new DateTime('+1 week');echo $nextWeek->format('Y-m-d');?>


Modificar la fecha: modify()

El método modify() permite agregar o restar intervalos fácilmente:

<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('d.m.Y'); // 20.04.2025

$date->modify('-1 month');echo $date->format('d.m.Y'); // 20.03.2025?>


Trabajo con zonas horarias

Ignorar las zonas horarias es un error común. PHP ofrece dos formas de gestionarlas: globalmente con date_default_timezone_set() y localmente con el objeto DateTimeZone.



Configuración global

Establece la zona horaria al inicio del script:

<?phpdate_default_timezone_set('Europe/Madrid');echo date('H:i'); // Hora en Madrid?>


Configuración local para DateTime

Cada objeto DateTime puede tener su propia zona horaria:

<?php$timezone = new DateTimeZone('America/Mexico_City');$date = new DateTime('now', $timezone);echo $date->format('H:i'); // Hora en Ciudad de México

// Cambiar la zona de un objeto existente$date->setTimezone(new DateTimeZone('Europe/Madrid'));echo $date->format('H:i'); // Hora convertida?>


Diferencia entre fechas: DateInterval

La clase DateInterval y el método diff() permiten calcular la diferencia entre dos fechas.



Calcular la diferencia

<?php$start = new DateTime('2025-01-01');$end = new DateTime('2025-12-31');$interval = $start->diff($end);

echo $interval->days; // 364 (cantidad

Blogs

Book Recommendations