Fechas y Tiempo en PHP

Objetivos de Aprendizaje
  • Comprender las funciones básicas de manejo de fechas en PHP
  • Aprender a trabajar con timestamps y formatos de fecha
  • Dominar la clase DateTime y sus métodos
  • Manejar zonas horarias y diferencias de tiempo

Funciones Básicas de Fecha y Hora

PHP proporciona varias funciones para trabajar con fechas y horas. La función más básica es date(), que permite formatear una fecha según nuestras necesidades.

fecha_basica.php

<?php
// Obtener la fecha actual
echo date("Y-m-d"); // Formato: AAAA-MM-DD
echo "<br>";

// Obtener la hora actual
echo date("H:i:s"); // Formato: HH:MM:SS
echo "<br>";

// Fecha y hora completa
echo date("Y-m-d H:i:s"); // Formato: AAAA-MM-DD HH:MM:SS
echo "<br>";

// Formato personalizado
echo date("l, j \d\e F \d\e Y"); // Ejemplo: Lunes, 9 de Mayo de 2025
?>
                            
Formato Descripción Ejemplo
Y Año con 4 dígitos 2025
m Mes con 2 dígitos 05
d Día con 2 dígitos 09
H Hora formato 24h 13
i Minutos 30
s Segundos 45

Trabajando con Timestamps

Un timestamp es un número entero que representa los segundos transcurridos desde el 1 de enero de 1970 (época Unix). PHP proporciona varias funciones para trabajar con timestamps.

timestamps.php

<?php
// Obtener el timestamp actual
$timestamp_actual = time();
echo "Timestamp actual: " . $timestamp_actual;
echo "<br>";

// Convertir una fecha a timestamp
$fecha_string = "2025-05-09";
$timestamp = strtotime($fecha_string);
echo "Timestamp de $fecha_string: " . $timestamp;
echo "<br>";

// Operaciones con fechas
echo "En una semana: " . date("Y-m-d", strtotime("+1 week"));
echo "<br>";
echo "En dos meses: " . date("Y-m-d", strtotime("+2 months"));
?>
                            

La Clase DateTime

PHP proporciona la clase DateTime para un manejo más orientado a objetos de las fechas. Esta clase ofrece métodos más potentes y flexibles para trabajar con fechas y horas.

datetime.php

<?php
// Crear objeto DateTime
$fecha = new DateTime();
echo $fecha->format('Y-m-d H:i:s');
echo "<br>";

// Crear fecha específica
$fecha_especifica = new DateTime('2025-05-09');
echo $fecha_especifica->format('Y-m-d');
echo "<br>";

// Modificar fecha
$fecha->modify('+1 month');
echo "En un mes: " . $fecha->format('Y-m-d');
echo "<br>";

// Diferencia entre fechas
$fecha1 = new DateTime('2025-01-01');
$fecha2 = new DateTime('2025-12-31');
$diferencia = $fecha1->diff($fecha2);
echo "Diferencia: " . $diferencia->days . " días";
?>
                            

Zonas Horarias

El manejo de zonas horarias es crucial en aplicaciones que operan globalmente. PHP permite trabajar con diferentes zonas horarias usando la clase DateTimeZone.

timezones.php

<?php
// Establecer zona horaria
date_default_timezone_set('America/Mexico_City');

// Crear objeto DateTime con zona horaria
$fecha_cdmx = new DateTime('now', new DateTimeZone('America/Mexico_City'));
echo "CDMX: " . $fecha_cdmx->format('Y-m-d H:i:s');
echo "<br>";

// Cambiar zona horaria
$fecha_madrid = clone $fecha_cdmx;
$fecha_madrid->setTimezone(new DateTimeZone('Europe/Madrid'));
echo "Madrid: " . $fecha_madrid->format('Y-m-d H:i:s');
echo "<br>";

// Listar zonas horarias disponibles
$zonas = DateTimeZone::listIdentifiers(DateTimeZone::AMERICA);
echo "Zonas horarias de América:<br>";
foreach ($zonas as $zona) {
    echo $zona . "<br>";
}
?>
                            

Ejercicio Práctico

Crea un calendario de eventos que:

  1. Permita agregar eventos con fecha y hora
  2. Calcule la diferencia de tiempo hasta cada evento
  3. Muestre los eventos ordenados cronológicamente
  4. Soporte diferentes zonas horarias
Sugerencia

Utiliza la clase DateTime para manejar las fechas y DateTimeZone para las zonas horarias. Implementa una función de ordenamiento basada en los timestamps de los eventos.