Vaya al Contenido

PHP Fecha y hora - SuperHispano

Saltar menú
SuperHispano
+34 012 345 678
info@example.com
España 03:19:18 sábado 07/02/26
Saltar menú
Saltar menú
Saltar menú
Taller > PHP > Fecha y Hora

Fecha y Hora en PHP


Cuando trabajas con fechas y horas en PHP, te adentras en un tema fundamental que te permitirá manejar desde funciones simples hasta cálculos complejos de fechas, zonas horarias, y formateo de tiempo.
En este artículo, exploraremos cómo manejar y manipular fechas y horas en PHP, utilizando ejemplos claros y bien documentados para que puedas aplicarlo en tus proyectos.

Introducción a la Función date()


PHP proporciona varias funciones para manejar fechas y horas, y la función >date() es una de las más utilizadas. Su propósito es dar formato a una fecha u hora.

Sintaxis Básica


echo date("Y-m-d");

Explicación:


"Y-m-d": Especifica el formato de la fecha.
Y: Año de cuatro dígitos.
m: Mes con dos dígitos (01 a 12).
d: Día del mes con dos dígitos (01 a 31).
date(): Devuelve la fecha actual si no se especifica ningún timestamp.

Cuando ejecutas el código anterior, obtendrás la fecha actual en el formato YYYY-MM-DD.

Formatos Comunes para date()


Para personalizar la salida de la fecha y hora, puedes usar diferentes caracteres de formato. Aquí tienes algunos de los formatos más comunes:

Formatos para date() en PHP
Formato Descripción Ejemplo
d Día del mes, 2 dígitos (01 a 31) 05
D Día de la semana, texto corto (Mon a Sun) Mon
m Mes numérico, 2 dígitos (01 a 12) 07
M Mes, texto corto (Jan a Dec) Jul
Y Año, 4 dígitos 2026
y Año, 2 dígitos 24
H Hora en formato 24 horas (00 a 23) 14
h Hora en formato 12 horas (01 a 12) 02
i Minutos con ceros iniciales (00 a 59) 09
s Segundos con ceros iniciales (00 a 59) 05
a Ante meridiem y Post meridiem en minúsculas am o pm

Puedes combinar estos formatos para personalizar la salida de la fecha y hora.

Obtener la Hora Actual


La función date() también puede manejar formatos para horas.

echo date("H:i:s");

Explicación:


H: Hora en formato de 24 horas (00 a 23).
i: Minutos (00 a 59).
s: Segundos (00 a 59).

Ejemplo de Fecha y Hora Completa


echo date("Y-m-d H:i:s");

Este ejemplo imprimirá la fecha y hora actual en formato YYYY-MM-DD HH:MM:SS.

Usando la Función time()


La función time() devuelve la marca de tiempo Unix actual, que es el número de segundos desde el 1 de enero de 1970.

$timestamp = time();
echo $timestamp;


Explicación:


time(): Devuelve el número de segundos transcurridos desde el 1 de enero de 1970.

Este valor puede ser útil para cálculos de fechas, como determinar cuántos días han pasado entre dos fechas.

Crear Fechas Personalizadas con mktime()


La función mktime() crea una marca de tiempo Unix para una fecha específica.

$customDate = mktime(0, 0, 0, 12, 25, 2024);
echo date("Y-m-d", $customDate);


Explicación:


mktime(hour, minute, second, month, day, year): Crea un timestamp Unix.
En el ejemplo, se creó una fecha para el 25 de diciembre de 2024.

Manipulación de Fechas con DateTime


Desde PHP 5.2, DateTime es una clase poderosa que permite un control más avanzado.

Creando un Objeto DateTime


$date = new DateTime();
echo $date->format('Y-m-d H:i:s');


Explicación:


new DateTime(): Crea un objeto de fecha y hora con la fecha y hora actual.
format(): Permite dar formato a la fecha y hora.

Cambiando Zonas Horarias


$date = new DateTime('now', new DateTimeZone('America/New_York'));
echo $date->format('Y-m-d H:i:s');


Explicación:


new DateTimeZone('America/New_York'): Establece la zona horaria a Nueva York.

Formato Internacional de Fechas con IntlDateFormatter


La clase IntlDateFormatter permite formatear fechas y horas según la configuración regional, lo que es útil para aplicaciones multilingües.

$formatter = new IntlDateFormatter('es_ES', IntlDateFormatter::FULL, IntlDateFormatter::FULL);
echo $formatter->format(new DateTime());


Explicación:


'es_ES': Configura la región para España.
IntlDateFormatter::FULL: Utiliza el formato completo para fecha y hora.

Configurar la Zona Horaria Predeterminada


PHP permite establecer una zona horaria predeterminada para todo el script usando date_default_timezone_set().

date_default_timezone_set('America/Mexico_City');
echo date("Y-m-d H:i:s"); // Muestra la fecha y hora en la zona horaria especificada


Este ajuste es útil si necesitas que toda tu aplicación use una zona horaria específica.

Diferencia entre Fechas


Calcular la diferencia entre dos fechas puede ser útil para determinar períodos de tiempo.

$date1 = new DateTime('2024-11-08');
$date2 = new DateTime('2025-01-01');
$interval = $date1->diff($date2);
echo $interval->format('%R%a días');


Explicación:


diff(): Calcula la diferencia entre dos objetos DateTime.
format(): Permite mostrar la diferencia en días usando %a.

Añadir o Restar Fechas con modify()


Puedes añadir o restar intervalos de tiempo a una fecha usando el método modify().

$date = new DateTime('2024-11-08');
$date->modify('+1 month');
echo $date->format('Y-m-d'); // Resultado: 2024-12-08


Explicación:


modify('+1 month'): Añade un mes a la fecha actual del objeto $date.
Puedes usar + o - para añadir o restar tiempo (ej. '-15 days').

Trabajando con Formatos Personalizados y Conversiones


Puedes personalizar el formato de la fecha y realizar conversiones específicas.

Convertir Cadena a DateTime con strtotime()


$dateString = '2024-12-31 15:30:00';
$timestamp = strtotime($dateString);
echo date('Y-m-d H:i:s', $timestamp);


Explicación:


strtotime(): Convierte una cadena de texto a un timestamp Unix.

Ejemplos Prácticos


Calcular la Edad de una Persona


$fechaNacimiento = new DateTime('2000-05-15');
$hoy = new DateTime();
$edad = $fechaNacimiento->diff($hoy);
echo "La edad es " . $edad->y . " años.";


Explicación:


diff(): Calcula la diferencia entre la fecha de nacimiento y la fecha actual.
$edad->y: Obtiene los años completos de la diferencia calculada.

Crear una Cuenta Regresiva


$evento = new DateTime('2025-01-01');
$hoy = new DateTime();
$intervalo = $hoy->diff($evento);
echo "Faltan " . $intervalo->days . " días para el Año Nuevo.";


Explicación:


diff(): Calcula el tiempo restante hasta el evento.
$intervalo->days: Número total de días hasta el evento.

Problemas Comunes al Trabajar con fechas


No Establecer la Zona Horaria Correctamente. Si no estableces la zona horaria, PHP utilizará la configuración predeterminada, lo que puede causar resultados inesperados. // Solución:
date_default_timezone_set('America/Los_Angeles');


Formato Incorrecto en date(). Usar caracteres de formato incorrectos puede dar resultados no deseados.

// Error común:
echo date("Y-M-D"); // 'M' y 'D' mayúsculas pueden no dar el resultado esperado.

// Corrección:
echo date("Y-m-d");


Olvidar Validar Fechas de Entrada. Al manipular fechas proporcionadas por el usuario, es importante validarlas para evitar errores.

$fechaEntrada = '2024-02-30';
if (strtotime($fechaEntrada) === false) {
echo "Fecha no válida.";
} else {
// Procesar la fecha
}


DateTime vs date(): ¿Cuál Usar?


DateTime vs date() en PHP
Característica date() DateTime
Facilidad de Uso Simple para casos básicos Más complejo pero potente
Manipulación de Fechas Limitada Amplia funcionalidad
Zonas Horarias Menos flexible Altamente configurable
Objetos y Métodos Funciones procedurales Orientado a objetos

Recomendación:


Usa date() para operaciones simples y rápidas de formateo.
Usa DateTime para manipulación avanzada de fechas, cálculos y manejo de zonas horarias.

Conclusión


Manipular fechas y horas en PHP puede parecer complejo al principio, pero con las herramientas adecuadas, puedes realizar cálculos y ajustes precisos. Esto es especialmente útil para aplicaciones web que requieren programación basada en tiempo.
+34 012 345 678
+34 012 345 678 (fax)
example@superhispano.com
Creado con WebSite X5
Regreso al contenido
Icono de la aplicación
SuperHispano Instale esta aplicación en su pantalla de inicio para una mejor experiencia
Toque Botón de instalación en iOS y luego "Agregar a su pantalla"