W3docs

Entendiendo la Función PHP Date Timezone Version Get

Aprende a usar timezone_version_get() en PHP para obtener la versión de la base de datos de zonas horarias del módulo intl.

La función timezone_version_get() devuelve la versión de la base de datos de zonas horarias incluida con la extensión intl. La base de datos de zonas horarias (comúnmente denominada tz database o IANA tz data) es la fuente canónica de las reglas de zonas horarias del mundo: desplazamientos UTC, transiciones de horario de verano y cambios históricos. Los gobiernos modifican estas reglas con regularidad, por lo que la base de datos se revisa varias veces al año y se etiqueta con una versión como 2024.1.

Conocer la versión es importante porque las reglas desactualizadas producen tiempos incorrectos. Si un país modifica la fecha de inicio de su horario de verano y el servidor todavía usa una base de datos antigua, todos los cálculos de fechas que crucen esa transición estarán desfasados en una hora. timezone_version_get() permite conocer qué versión está usando PHP realmente, de modo que se pueda auditar, registrar o alertar cuando esté desactualizada.

Esta página cubre la sintaxis, cómo llamarla de forma segura, cómo interpretar el resultado y cómo se relaciona con las demás funciones de zonas horarias de PHP.

Sintaxis

La función timezone_version_get() tiene una sintaxis muy sencilla. A continuación se muestra la sintaxis:

Sintaxis de la función PHP timezone_version_get()

string timezone_version_get ( void )

Disponible desde PHP 5.2.0.

Esta función no recibe argumentos y devuelve un string que contiene únicamente el número de versión, como 2023.3 o 2024.1. El formato es YYYY.N: el año de cuatro dígitos de la versión IANA seguido del lanzamiento secuencial dentro de ese año (a, b, c… en IANA se convierten en .1, .2, .3 aquí).

Nota: timezone_version_get() forma parte de la extensión intl, no de la extensión de fecha/hora principal. Informa sobre la copia de datos de zonas horarias de intl/ICU incluida, que puede diferir de la versión que usan las clases DateTime/DateTimeZone de PHP. Para comprobar si la extensión intl está disponible, usa extension_loaded('intl') antes de llamarla.

Uso

Una llamada típica tiene el siguiente aspecto:

  1. Proteger con extension_loaded('intl') para que el script no falle en servidores sin la extensión.
  2. Llamar a timezone_version_get() para obtener el string de versión.
  3. Almacenar, registrar o mostrar el valor, o compararlo con el mínimo esperado.

Ejemplo

A continuación se muestra un fragmento de código de ejemplo que ilustra cómo usar la función timezone_version_get() en tus aplicaciones PHP:

Ejemplo de la función timezone_version_get() en PHP

php— editable, runs on the server

Nota: Esta función requiere la extensión intl. Si la extensión no está habilitada, la función no estará disponible. El ejemplo anterior incluye una verificación para evitar un error fatal.

Advertencia cuando la base de datos está desactualizada

Dado que la versión es simplemente un string YYYY.N, se puede comparar con el mínimo de confianza. Esto es útil para un endpoint de verificación de estado o como guardia de despliegue:

<?php
$minimum = '2024.1';
$current = timezone_version_get();

if (version_compare($current, $minimum, '<')) {
    echo "Warning: timezone database $current is older than $minimum. Update the intl/ICU library.";
} else {
    echo "Timezone database $current is up to date.";
}
?>

version_compare() trata la versión con puntos como una versión de software, por lo que 2024.1 se compara correctamente como más reciente que 2023.3.

Funciones relacionadas

timezone_version_get() es la única función que informa sobre la versión de la base de datos. El resto del conjunto de herramientas de zonas horarias de PHP trabaja con los propios datos:

Conclusión

timezone_version_get() es una función pequeña pero práctica: indica exactamente qué base de datos de zonas horarias IANA está usando la extensión intl. Siempre protege la llamada con extension_loaded('intl'), y considera comparar la versión devuelta con un mínimo conocido como válido para que las reglas de zonas horarias desactualizadas se detecten durante el despliegue y no como marcas de tiempo incorrectas en producción.

Práctica

Práctica
¿Cuál es la función de timezone_version_get() en PHP?
¿Cuál es la función de timezone_version_get() en PHP?
Was this page helpful?