Introducción: por qué es importante saber trabajar con fechas y horas en PHP
Trabajar con fechas y horas es una de las tareas clave en el desarrollo web. Ya sea para registrar acciones de usuarios, calcular edades, crear calendarios, procesar marcas de tiempo de bases de datos o gestionar plazos de suscripciones — no se puede prescindir de herramientas fiables para trabajar con fechas. PHP ofrece a los desarrolladores un conjunto potente y flexible de funciones y clases para estos fines.
En este artículo, analizaremos en detalle las principales formas de trabajar con fechas y horas en PHP: desde las funciones simples date() y time() hasta el enfoque orientado a objetos utilizando la clase DateTime. Aprenderá a formatear fechas, calcular la diferencia entre ellas, trabajar con zonas horarias y evitar errores típicos.
Funciones principales: date(), time() y mktime()
La forma más sencilla de obtener la fecha u hora actual en PHP es usar la función date(). Esta acepta una cadena de formato y, opcionalmente, una marca de tiempo (timestamp). Si no se pasa una marca de tiempo, se utiliza la hora actual.
<?php// Fecha actual en formato "Año-Mes-Día"echo date('Y-m-d'); // Salida: 2025-04-10
// Hora actual en formato "Horas:Minutos:Segundos"echo date('H:i:s'); // Salida: 14:35:20
// Fecha y hora completaecho date('Y-m-d H:i:s'); // Salida: 2025-04-10 14:35:20?>Función time()
time() devuelve la marca de tiempo Unix actual (el número de segundos transcurridos desde el 1 de enero de 1970). Esto es útil para cálculos y comparaciones.
<?php$now = time();echo $now; // Salida: 1744277720 (el número cambia cada segundo)
// Fecha dentro de 7 días$nextWeek = time() + (7 * 24 * 60 * 60);echo date('Y-m-d', $nextWeek); // Salida: 2025-04-17?>Función mktime()
mktime() permite crear una marca de tiempo para una fecha y hora específicas. Es útil cuando se necesita obtener un timestamp para parámetros determinados.
<?php// Creamos una marca de tiempo para el 25 de diciembre de 2025, a las 10:00:00$christmas = mktime(10, 0, 0, 12, 25, 2025);echo date('Y-m-d H:i:s', $christmas); // Salida: 2025-12-25 10:00:00?>Formateo de fechas: símbolos principales
En la tabla a continuación se muestran los símbolos de formato más utilizados para la función date():
- d — día del mes (01–31)
- m — número del mes (01–12)
- Y — año en formato de 4 dígitos (2025)
- H — horas en formato de 24 horas (00–23)
- i — minutos (00–59)
- s — segundos (00–59)
- l — nombre completo del día de la semana (Monday)
- F — nombre completo del mes (April)
Enfoque orientado a objetos: la clase DateTime
A partir de PHP 5.2, se recomienda usar la clase DateTime para trabajar con fechas. Proporciona muchas más capacidades y una interfaz intuitiva.
Creación de un objeto DateTime
<?php// Fecha y hora actual$date = new DateTime();echo $date->format('Y-m-d H:i:s'); // Salida: 2025-04-10 14:35:20
// Fecha específica$birthday = new DateTime('1990-07-15');echo $birthday->format('d.m.Y'); // Salida: 15.07.1990
// Con formato relativo$nextMonth = new DateTime('+1 month');echo $nextMonth->format('Y-m-d'); // Salida: 2025-05-10?>Modificación de fechas
El método modify() permite cambiar la fecha fácilmente usando cadenas relativas.
<?php$date = new DateTime('2025-04-10');$date->modify('+10 days');echo $date->format('Y-m-d'); // Salida: 2025-04-20
$date->modify('first day of next month');echo $date->format('Y-m-d'); // Salida: 2025-05-01?>