gmdate()
Apprenez la fonction PHP gmdate() : formater une date et heure UTC/GMT, sa syntaxe, ses paramètres, les caractères de format courants et des exemples.
Introduction
La fonction gmdate() formate un horodatage Unix en une chaîne de date et d'heure lisible par l'homme en GMT/UTC, en ignorant le fuseau horaire configuré sur le serveur. C'est le pendant UTC exclusif de date() : les deux acceptent les mêmes caractères de format, mais gmdate() retourne toujours l'heure en Temps Universel Coordonné. C'est donc le bon outil chaque fois que vous avez besoin d'une valeur indépendante du fuseau horaire — journaliser un événement, construire un en-tête HTTP, ou stocker un horodatage normalisé que chaque serveur et client interprète de la même façon.
Ce guide couvre la syntaxe, les paramètres, les caractères de format les plus courants, la différence entre gmdate() et date(), ainsi que plusieurs exemples exécutables.
Syntaxe
gmdate(string $format, ?int $timestamp = null): stringParamètres
$format(obligatoire) — Une chaîne de caractères de format qui sont remplacés par les valeurs de date/heure correspondantes. Tout caractère non reconnu comme spécificateur de format est imprimé tel quel. Pour afficher une lettre littérale qui serait autrement interprétée, échappez-la avec une barre oblique inverse (par exemple\T).$timestamp(optionnel) — Un horodatage Unix (secondes écoulées depuis le 1er janvier 1970, 00:00:00 UTC). Lorsqu'il est omis ou vautnull, l'heure actuelle est utilisée.
La fonction retourne la date/heure formatée sous forme de chaîne, toujours exprimée en UTC quelle que soit la configuration de date_default_timezone_set() ou du paramètre date.timezone du serveur.
Caractères de format courants
Ce sont les spécificateurs que vous utiliserez le plus souvent. Ils sont identiques à ceux utilisés par date().
| Caractère | Signification | Exemple |
|---|---|---|
Y | Année sur 4 chiffres | 2026 |
m | Mois, 2 chiffres avec zéro de tête | 06 |
d | Jour du mois, 2 chiffres | 04 |
H | Heure, format 24 heures (00–23) | 05 |
i | Minutes (00–59) | 45 |
s | Secondes (00–59) | 57 |
D | Jour de la semaine, texte abrégé | Sun |
M | Mois, texte abrégé | Mar |
T | Abréviation du fuseau horaire | GMT |
U | Secondes depuis l'époque Unix | 1646372757 |
Exemples
Exemple 1 : Afficher la date et l'heure GMT/UTC actuelles
Sans argument d'horodatage, gmdate() formate le moment présent en UTC.
Exemple 2 : Formater la date et l'heure avec des spécificateurs personnalisés
Un modèle courant consiste à construire un horodatage lisible au style RFC. Comme gmdate() est en UTC, le spécificateur T affiche toujours GMT.
Exemple 3 : Formater un horodatage spécifique
Passez un horodatage Unix en second argument pour formater un moment précis dans le temps plutôt que « maintenant ».
gmdate() vs date()
date() formate un horodatage en utilisant le fuseau horaire local configuré pour le script, tandis que gmdate() formate toujours en UTC. Pour un même horodatage, les deux retournent la même chaîne uniquement lorsque le fuseau horaire local est UTC.
<?php
date_default_timezone_set('America/New_York');
$timestamp = 1646372757;
echo date('Y-m-d H:i:s', $timestamp); // 2022-03-04 00:45:57 (local, UTC-5)
echo "\n";
echo gmdate('Y-m-d H:i:s', $timestamp); // 2022-03-04 05:45:57 (UTC)Utilisez gmdate() lorsque la valeur doit être indépendante du fuseau horaire (journaux, en-têtes HTTP Date, réponses API, stockage en base de données). Utilisez date() lorsque vous affichez une heure à un utilisateur dans son fuseau horaire local.
Quand utiliser gmdate()
- Journalisation standardisée — stockez les horodatages en UTC afin que les entrées provenant de serveurs dans différentes régions restent comparables.
- En-têtes HTTP et mise en cache — les en-têtes tels que
ExpiresetLast-Modifieddoivent être exprimés en GMT. - APIs et échanges de données — retournez UTC pour que les clients puissent convertir vers n'importe quel fuseau horaire local de manière fiable.
Pour une gestion complète des dates orientée objet avec conversion explicite de fuseau horaire, préférez les classes DateTime et DateTimeZone. Pour construire les horodatages à passer à gmdate(), consultez gmmktime() (UTC) et mktime() (heure locale).
Conclusion
La fonction gmdate() offre un moyen simple de formater des dates et heures en UTC, en utilisant les mêmes caractères de format que date() mais toujours ancré au GMT. Ce guide a couvert sa syntaxe, ses paramètres, les caractères de format les plus courants, la différence avec date(), ainsi que des exemples pratiques pour vous aider à l'intégrer dans vos projets. Pour en savoir plus sur le travail avec les dates en PHP, consultez l'aperçu Date et Heure PHP.