Trabajo con fechas y horas en PHP: funciones, clases y ejemplos

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: desde lo básico hasta técnicas avanzadas



Trabajar con fechas y horas es una de las tareas más comunes en el desarrollo web. Ya sea para mostrar la fecha actual, calcular la diferencia entre eventos o guardar marcas de tiempo en la base de datos, PHP proporciona un conjunto de herramientas potente y flexible. En este artículo, analizaremos en detalle las funciones principales, clases y mejores prácticas para trabajar con fechas y horas en PHP.



El material será útil tanto para principiantes que recién comienzan a aprender PHP como para desarrolladores experimentados que desean sistematizar sus conocimientos.



1. Funciones básicas: date(), time() y mktime()



Empecemos por lo fundamental. PHP ofrece varias funciones integradas para trabajar con fechas. Las más populares son date(), time() y mktime().



Función time()

La función time() devuelve la marca de tiempo Unix actual (timestamp) — la cantidad de segundos transcurridos desde el 1 de enero de 1970 a las 00:00:00 UTC. Este es el valor base del que parten muchas operaciones.



echo time(); // Mostrará algo como 1698765432


Función date()

La función date() formatea la fecha y hora local. El primer parámetro es una cadena de formato, el segundo (opcional) es un timestamp. Si no se especifica el segundo parámetro, se usa la hora actual.



// Formatos básicosecho date("Y-m-d");          // 2023-10-31echo date("H:i:s");          // 14:30:00echo date("d.m.Y H:i");      // 31.10.2023 14:30echo date("l, j F Y");       // Tuesday, 31 October 2023

// Timestamp personalizado$timestamp = mktime(12, 0, 0, 1, 1, 2024);echo date("Y-m-d H:i:s", $timestamp); // 2024-01-01 12:00:00


Símbolos de formato populares:

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


Función mktime()

mktime() crea un timestamp basado en los parámetros proporcionados (horas, minutos, segundos, mes, día, año). Esto es útil para obtener la marca de tiempo de una fecha específica.



// Creamos un timestamp para el 25 de diciembre de 2023, a las 10:30:00$christmas = mktime(10, 30, 0, 12, 25, 2023);echo date("d.m.Y H:i:s", $christmas); // 25.12.2023 10:30:00


2. Enfoque orientado a objetos: clase DateTime



Aunque las funciones date() y time() son simples, tienen limitaciones. Para operaciones más complejas (comparación de fechas, trabajo con zonas horarias, suma/resta de intervalos) es mejor usar la clase DateTime.



Creación de objetos DateTime

// Hora actual$now = new DateTime();echo $now->format("Y-m-d H:i:s"); // 2023-10-31 14:30:00

// Fecha específica$date = new DateTime("2024-03-15 08:00:00");echo $date->format("d.m.Y"); // 15.03.2024

// Formatos relativos$nextWeek = new DateTime("+1 week");echo $nextWeek->format("Y-m-d");

$lastMonth = new DateTime("first day of last month");echo $lastMonth->format("Y-m-d");


Trabajo con zonas horarias

Una de las principales ventajas de DateTime es el soporte de zonas horarias.



// Especificamos la zona horaria al crear$moscow = new DateTime("now", new DateTimeZone("Europe/Moscow"));echo $moscow->format("Y-m-d H:i:s"); // Hora de Moscú

// Cambio de zona horaria$newYork = new DateTime("now", new DateTimeZone("America/New_York"));echo $newYork->format("Y-m-d H:i:s"); // Hora de Nueva York

// Lista de zonas disponibles: https://www.php.net/manual/ru/timezones.php


Comparación de fechas

$date1 = new DateTime("2024-01-01");$date2 = new DateTime("2024-12-31");

if ($date1 < $date2) { echo "La primera fecha es anterior a la segunda";}

// Dif

Blogs

Book Recommendations