Manipulación de Fechas y Tiempos en PHP

PHP ofrece un robusto conjunto de funciones integradas para trabajar con fechas y horas, permitiendo recuperar y manipular información temporal del servidor.

Zonas Horarias y Configuración

El mundo se divide en 24 zonas horarias. Para la comunicación internacional, se utiliza el Tiempo Universal Coordinado (UTC), equivalente al Meridiano de Greenwich. Por defecto, PHP opera en la zona horaria cero. Para obtener la hora local correcta, es necesario configurar la zona horaria en la aplicación PHP.

Existen varias maneras de ajustar la zona horaria:

  1. Modificación de php.ini: Edite el archivo de configuración de PHP, busque la directiva date.timezonebajo la sección[Date]y asígnele un valor comoAsia/HongKong`. Reinicie el servidor web (por ejemplo, Apache) para que los cambios surtan efecto.
  2. Configuración en la aplicación: Utilice la función date\_default\_timezone\_set(timezone); antes de invocar cualquier función relacionada con fechas u horas. El parámetro timezone debe ser un nombre de zona horaria válido reconocido por PHP; de lo contrario, se usará UTC.
  3. Configuración dinámica con ini_set(): Modifique la zona horaria de forma temporal dentro del script mediante ini\_set('date.timezone', 'America/New\_York');.

Funciones Clave para Fechas y Tiempos

1. Obtención de Marcas de Tiempo (Timestamps)

  • mktime(hour, minute, second, month, day, year, is_dst): Coniverte componentes de fecha y hora en una marca de tiempo Unix. Si no se proporcionan argumentos, devuelve la marca de tiempo de la hora actual. ```

    echo "Marca de tiempo generada: " . mktime(); echo "Fecha actual: " . date("Y-m-d", mktime()) . "";

  • time(): Devuelve la marca de tiempo Unix actual (segundos transcurridos desde el 1 de enero de 1970, 00:00:00 UTC). ```

    $timestampActual = time(); echo "Marca de tiempo actual: " . $timestampActual . "";

    
    

2. Formato y Recuperación de Información de Fecha

  • date(format, timestamp): Formatea una marca de tiempo Unix en una cadena de fecha legible. Si timestamp se omite, se usa la hora actual. Formatos comunes:

    • Y: Año con 4 dígitos (ej. 2023)
    • m: Mes con 2 dígitos (ej. 01 para enero)
    • d: Día del mes con 2 dígitos (ej. 05)
    • H: Hora en formato 24 horas (ej. 14)
    • i: Minutos con 2 dígitos (ej. 09)
    • s: Segundos con 2 dígitos (ej. 01)
    • l (letra L minúscula): Día de la semana completo (ej. Monday)
    • D: Día de la semana abreviado (ej. Mon)
    • F: Mes completo (ej. January)
    • M: Mes abreviado (ej. Jan)
    
    echo "Fecha actual formateada: " . date("Y-m-d H:i:s") . "<br></br>";
    echo "Formato alternativo: " . date("d/m/Y, g:i A") . "<br></br>";
    
    
  • getdate(timestamp): Devuelve un array asociativo con información detallada de una fecha y hora. Si no se especifica timestamp, se usa la hora actual. ```

    $infoFecha = getdate(); echo "Año: " . $infoFecha['year'] . ""; echo "Mes: " . $infoFecha['mon'] . ""; echo "Día del mes: " . $infoFecha['mday'] . ""; echo "Día de la semana (numérico, 0=domingo): " . $infoFecha['wday'] . ""; echo "Nombre del día: " . $infoFecha['weekday'] . "";

    
    

3. Validación y Análisis de Fechas

  • checkdate(month, day, year): Verifica si una fecha dada es válida en el calendario gregoriano. Devuelve true si es válida, false en caso contrario. ```

    if (checkdate(2, 29, 2024)) { echo "El 29 de febrero de 2024 es una fecha válida."; } else { echo "El 29 de febrero de 2024 NO es una fecha válida."; }

  • strtotime(time, now): Convierte una cadena de texto que representa una fecha y hora en una marca de tiempo Unix. Es muy flexible con los formatos de entrada. ```

    echo "Timestamp para 'now': " . strtotime("now") . ""; echo "Timestamp para '2024-03-15 10:30:00': " . strtotime("2024-03-15 10:30:00") . ""; echo "Timestamp para '+1 week': " . strtotime("+1 week") . ""; echo "Fecha formateada de 'tomorrow': " . date("Y-m-d", strtotime("tomorrow")) . "";

    
    

4. Internacionalización de Fechas

Para mostrar fechas y horas según las convenciones locales, se utilizan las funciones setlocale y strftime.

  • setlocale(category, locale): Establece las reglas de localización para diferentes categerías. LC\_TIME es la categoría relevante para la fecha y hora. ```

    // Ejemplo para configurar localización en español (puede variar el nombre del locale) setlocale(LC_TIME, 'es_ES.UTF-8', 'Spanish_Spain', 'es');

  • strftime(format, timestamp): Formatea una fecha y hora según la configuración de localización actual y un formato especificado. ```

    echo "Fecha local formateada: " . strftime("%A, %d de %B de %Y, %H:%M:%S") . "";

    
    Los códigos de formato para `strftime` difieren de los de `date()` y están definidos por el estándar POSIX.
    

Etiquetas: PHP fechas horas marcas de tiempo formato de fecha

Publicado el 6-21 23:25