W3docs

Comprendre la fonction PHP timezone_version_get

Découvrez la fonction PHP timezone_version_get() pour obtenir la version de la base de données de fuseaux horaires de l'extension intl.

La fonction timezone_version_get() retourne la version de la base de données de fuseaux horaires incluse avec l'extension intl. La base de données de fuseaux horaires (communément appelée tz database ou IANA tz data) est la source de référence des règles de fuseaux horaires du monde entier — décalages UTC, transitions d'heure d'été et changements historiques. Les gouvernements modifient ces règles régulièrement, donc la base de données est révisée plusieurs fois par an et marquée avec une version comme 2024.1.

Connaître la version est important car des règles obsolètes produisent des heures incorrectes. Si un pays modifie sa date de début d'heure d'été et que votre serveur utilise encore une ancienne base de données, chaque calcul de date au-delà de cette transition est décalé d'une heure. timezone_version_get() vous permet de lire quelle version PHP utilise réellement, afin de la vérifier, de la journaliser ou d'avertir lorsqu'elle est périmée.

Cette page couvre la syntaxe, comment l'appeler de manière sécurisée, comment interpréter le résultat et comment elle s'articule avec les autres fonctions de fuseaux horaires de PHP.

Syntaxe

La fonction timezone_version_get() a une syntaxe très simple. Voici la syntaxe :

Syntaxe de la fonction PHP timezone_version_get()

string timezone_version_get ( void )

Disponible depuis PHP 5.2.0.

Cette fonction ne prend aucun argument et retourne une chaîne contenant uniquement le numéro de version, tel que 2023.3 ou 2024.1. Le format est YYYY.N — l'année à quatre chiffres de la publication IANA suivie du numéro séquentiel de publication dans cette année (a, b, c… dans IANA deviennent .1, .2, .3 ici).

Remarque : timezone_version_get() fait partie de l'extension intl, et non de l'extension date/heure principale. Elle rapporte la copie intl/ICU des données de fuseaux horaires incluse, qui peut différer de la version utilisée par les classes DateTime/DateTimeZone de PHP. Pour vérifier si l'extension intl est présente, utilisez extension_loaded('intl') avant de l'appeler.

Utilisation

Un appel typique ressemble à ceci :

  1. Protégez avec extension_loaded('intl') pour que le script ne génère pas d'erreur fatale sur les serveurs sans l'extension.
  2. Appelez timezone_version_get() pour récupérer la chaîne de version.
  3. Stockez, journalisez ou affichez la valeur — ou comparez-la à un minimum attendu.

Exemple

Voici un exemple de code qui montre comment utiliser la fonction timezone_version_get() dans vos applications PHP :

Exemple de la fonction timezone_version_get() en PHP

php— editable, runs on the server

Remarque : Cette fonction nécessite l'extension intl. Si l'extension n'est pas activée, la fonction ne sera pas disponible. L'exemple ci-dessus inclut une vérification pour éviter une erreur fatale.

Avertissement lorsque la base de données est obsolète

Comme la version est simplement une chaîne YYYY.N, vous pouvez la comparer à un minimum de confiance. C'est utile pour un point de contrôle de santé ou une garde de déploiement :

<?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() traite la version pointée comme une version logicielle, donc 2024.1 est correctement comparé comme plus récent que 2023.3.

Fonctions associées

timezone_version_get() est la seule fonction qui rapporte la version de la base de données. Le reste de la boîte à outils de fuseaux horaires de PHP travaille avec les données elles-mêmes :

Conclusion

timezone_version_get() est une fonction simple mais pratique : elle vous indique exactement quelle base de données de fuseaux horaires IANA l'extension intl utilise. Protégez toujours l'appel avec extension_loaded('intl'), et envisagez de comparer la version retournée à un minimum connu pour que les règles de fuseaux horaires obsolètes apparaissent lors du déploiement plutôt que sous forme d'horodatages incorrects en production.

Entraînement

Pratique
Quelle est la fonction de timezone_version_get() en PHP ?
Quelle est la fonction de timezone_version_get() en PHP ?
Was this page helpful?