Fecha y hora actual en PHP: guía completa 2025

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

Cómo obtener la fecha y hora actual en PHP: mejores prácticas en 2025

\n\n

Cada desarrollador PHP, desde principiante hasta senior, se ha preguntado al menos una vez: "How do I get the current date and time in PHP?". Esta pregunta en Stack Overflow acumula miles de visitas y sigue siendo relevante. En 2025, cuando PHP mantiene firmemente su posición en el desarrollo web, saber trabajar correctamente con fechas y horas no es solo una competencia básica, sino una necesidad. Registro de logs, caché, informes, integración con APIs: todo requiere una hora precisa. En este artículo, no solo repasaremos las funciones clásicas, sino también las mejores prácticas modernas para que tu código sea limpio, confiable y preparado para cualquier zona horaria.

\n\n

Lo clásico: date() y time()

\n\n

La forma más simple y rápida de obtener la fecha y hora actual en PHP es la función date(). Acepta una cadena de formato y devuelve la fecha formateada según la hora actual del servidor o un timestamp específico.

\n\n
<?php\necho date('Y-m-d H:i:s'); // 2025-04-10 14:30:00\necho date('d.m.Y');        // 10.04.2025\necho date('r');            // Thu, 10 Apr 2025 14:30:00 +0300\n?>
\n\n

¿Y si solo necesitas el timestamp Unix (segundos desde el 1 de enero de 1970)? Usa time():

\n\n
<?php\n$timestamp = time();\necho $timestamp; // 1744273800 (ejemplo)\necho date('Y-m-d H:i:s', $timestamp);\n?>
\n\n

Importante: date() usa la zona horaria configurada en php.ini mediante la directiva date.timezone, o la establecida con la función date_default_timezone_set(). En 2025, esto sigue siendo una opción funcional para scripts simples, pero para proyectos serios existen herramientas más flexibles.

\n\n

Enfoque moderno: la clase DateTime

\n\n

Desde PHP 5.2 (y eso fue hace tiempo), el lenguaje incluye una forma orientada a objetos para trabajar con fechas: la clase DateTime. Se ha convertido en el estándar de facto para la mayoría de frameworks y CMS. ¿Por qué? Porque es más flexible, legible y seguro.

\n\n
<?php\n$now = new DateTime();\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00\n\n// Especificando la zona horaria\n$now = new DateTime('now', new DateTimeZone('Europe/Madrid'));\necho $now->format('Y-m-d H:i:s'); // 2025-04-10 14:30:00 (CEST)\n?>
\n\n

DateTime permite manipular fechas fácilmente: sumar días, restar meses, comparar objetos. Por ejemplo:

\n\n
<?php\n$today = new DateTime();\n$nextWeek = (new DateTime())->modify('+7 days');\n$diff = $nextWeek->diff($today);\necho $diff->days; // 7\n?>
\n\n

Este es el enfoque recomendado en las mejores prácticas de PHP para 2025. Es inmutable (si no modificas el objeto directamente) e intuitivo.

\n\n

Variante inmutable: DateTimeImmutable

\n\n

Si trabajas en un proyecto serio donde la previsibilidad es clave, usa DateTimeImmutable. A diferencia de DateTime, sus métodos no modifican el objeto original, sino que devuelven uno nuevo. Esto evita mutaciones accidentales del estado.

\n\n
<?php\n$date = new DateTimeImmutable('2025-04-10');\n$newDate = $date->modify('+1 month');\necho $date->format('Y-m-d');    // 2025-04-10 (sin cambios)\necho $newDate->format('Y-m-d'); // 2025-05-10\n?>
\n\n

En 2025, esto se considera una buena práctica: usa DateTimeImmutable siempre que sea posible.

\n\n

Zonas horarias: configuración y conversión

\n\n

El error con la zona horaria es uno de los problemas más comunes. Imagina: el servidor en EE. UU., el usuario en España, y tú mostrando la hora en UTC. Un clásico fracaso.

\n\n

Para evitarlo, especifica siempre la zona horaria explícitamente. La forma más confiable es configurarla al inicio del script con date_default_timezone_set():

\n

Blogs

Book Recommendations