W3docs

time()

Apprenez les fonctions PHP de date et heure : time(), date(), strtotime(), DateTimeImmutable, DateInterval et DateTimeZone avec des exemples exécutables.

Introduction

PHP fournit un ensemble robuste de fonctions de date et d'heure essentielles pour la gestion des données temporelles : journalisation des événements, planification, calcul des durées et affichage des dates localisées. Ce guide couvre les outils les plus couramment utilisés — time(), date(), strtotime(), et l'API objet moderne DateTimeImmutable / DateInterval / DateTimeZone — avec leur syntaxe et des exemples pratiques exécutables.

Quelques concepts à connaître au préalable :

  • Un timestamp Unix est un entier comptant les secondes depuis le 1er janvier 1970 00:00:00 UTC (l'« époque »). Il est indépendant du fuseau horaire, ce qui le rend idéal pour stocker et comparer des instants dans le temps.
  • Une chaîne de format transforme un timestamp en chaîne lisible par l'homme. Chaque caractère (Y, m, d, H, …) correspond à un composant de date.
  • PHP affiche les dates en utilisant le fuseau horaire par défaut du serveur. Définissez-le explicitement pour éviter les surprises :
<?php

date_default_timezone_set('UTC');

Définir le fuseau horaire en amont rend date() et time() déterministes entre les serveurs. Pour une introduction plus approfondie, voir PHP Date and Time.

Fonction date en PHP

La fonction date() formate un timestamp en chaîne lisible. Elle accepte deux paramètres : format (obligatoire) et timestamp (facultatif, par défaut l'heure actuelle). La chaîne de format utilise des caractères spécifiques pour représenter les composants de date.

Exemple de la fonction date() en PHP

php— editable, runs on the server

Dans cet exemple, Y, m et d représentent respectivement l'année sur quatre chiffres, le mois sur deux chiffres et le jour sur deux chiffres. La chaîne de format prend en charge de nombreux autres caractères pour les heures, les minutes, les secondes et plus encore.

Caractères de format courants

CaractèreSignificationExemple
YAnnée sur 4 chiffres2023
yAnnée sur 2 chiffres23
mMois, avec zéro03
nMois, sans zéro3
dJour du mois, avec zéro03
jJour du mois, sans zéro3
HHeure, 24h, avec zéro14
gHeure, 12h, sans zéro2
iMinutes09
sSecondes05
AAM/PMPM
lNom du jour (complet)Friday
DNom du jour (abrégé)Fri
FNom du mois (complet)March
TAbréviation du fuseau horaireUTC

Passez un second argument pour formater n'importe quel timestamp, pas seulement « maintenant » :

<?php

date_default_timezone_set('UTC');

echo date("l, F j, Y", 1678838400); // outputs "Wednesday, March 15, 2023"

Pour échapper une lettre littérale afin qu'elle ne soit pas traitée comme un caractère de format, préfixez-la d'un antislash (ex. date('jS \o\f F')). Pour plus d'options de formatage, voir date() et date_format().

Fonction time en PHP

La fonction time() renvoie le timestamp Unix actuel, qui compte le nombre de secondes depuis le 1er janvier 1970, 00:00:00 UTC.

Comment utiliser la fonction PHP time() ?

php— editable, runs on the server

L'entier renvoyé peut être passé directement à date() ou à d'autres fonctions temporelles pour un traitement ultérieur. Comme le timestamp n'est qu'un nombre, vous pouvez effectuer des opérations arithmétiques dessus — par exemple, ajouter 86400 (le nombre de secondes dans une journée) pour obtenir « à la même heure demain » :

<?php

date_default_timezone_set('UTC');

$tomorrow = time() + 86400; // 24 * 60 * 60 seconds
echo date("Y-m-d H:i:s", $tomorrow);

Pour les calculs de dates tenant compte des mois, des années bissextiles et de l'heure d'été, préférez l'API objet présentée ci-dessous plutôt que l'arithmétique brute en secondes.

Fonction strtotime en PHP

La fonction strtotime() analyse une description textuelle de date/heure en anglais et la convertit en timestamp Unix. Elle accepte un seul argument string.

Exemple de la fonction PHP strtotime

php— editable, runs on the server

Cela convertit la chaîne de date et d'heure spécifiée en sa valeur de timestamp Unix correspondante. strtotime() comprend également les expressions relatives, ce qui est pratique pour la planification :

<?php

date_default_timezone_set('UTC');

echo date("Y-m-d", strtotime("next monday")), "\n";
echo date("Y-m-d", strtotime("2023-03-03 +1 week")); // outputs "2023-03-10"

Si la chaîne ne peut pas être analysée, strtotime() renvoie false, vérifiez donc toujours le résultat avant de le transmettre.

Classe PHP DateInterval

La classe DateInterval représente une durée entre deux dates ou heures. Le développement PHP moderne utilise généralement DateTimeImmutable pour calculer les intervalles, car cela évite de muter l'objet date d'origine.

Exemple de la classe PHP DateInterval

php— editable, runs on the server

Cela calcule la différence entre deux dates. Le spécificateur de format %R%a affiche le signe (+ ou -) suivi du nombre total de jours.

Vous pouvez également construire un DateInterval directement à partir d'une chaîne de durée ISO 8601 et l'ajouter ou le soustraire d'une date. P1W signifie « une période d'une semaine » :

<?php

$start = new DateTimeImmutable('2023-03-03');
$later = $start->add(new DateInterval('P1W'));
echo $later->format('Y-m-d'); // outputs "2023-03-10"

Comme DateTimeImmutable ne mute jamais l'original, $start pointe toujours sur le 3 mars après l'appel à add(). Voir date_add(), date_sub() et date_diff() pour les équivalents procéduraux.

Fonctions PHP de fuseau horaire

PHP gère les fuseaux horaires via la classe DateTimeZone et les méthodes associées. Elles permettent la conversion entre zones et l'affichage des décalages UTC.

Exemple de fonctions PHP de fuseau horaire

php— editable, runs on the server

Cela affiche la date et l'heure dans la zone spécifiée, ainsi que son abréviation (ex. EST).

Pour convertir un instant existant d'une zone à une autre, utilisez setTimezone(). L'instant dans le temps reste le même — seule sa représentation change :

<?php

$ny = new DateTimeImmutable('2023-03-03 12:00:00', new DateTimeZone('America/New_York'));
$utc = $ny->setTimezone(new DateTimeZone('UTC'));
echo $utc->format('Y-m-d H:i:s T'); // outputs "2023-03-03 17:00:00 UTC"

New York est cinq heures en retard sur UTC en mars, donc midi à New York correspond à 17:00 UTC. Pour changer le fuseau horaire utilisé par les fonctions procédurales date() et time(), appelez date_default_timezone_set().

API procédurale vs. API objet : laquelle utiliser

PHP propose deux styles pour travailler avec les dates :

  • Les fonctions procédurales (time(), date(), strtotime(), getdate(), gmdate()) sont concises et idéales pour un formatage rapide ou des conversions ponctuelles.
  • L'API objet (DateTimeImmutable, DateInterval, DateTimeZone) est le choix recommandé pour tout ce qui implique des fuseaux horaires, des durées ou des calculs de dates, car elle est explicite, immuable et évite les pièges de l'arithmétique en secondes entières lors des transitions DST.

Une bonne règle générale : optez pour DateTimeImmutable dès qu'une date traverse un fuseau horaire ou doit être ajoutée ou soustraite.

Conclusion

Maîtriser les fonctions PHP de date et d'heure permet aux développeurs de gérer les données temporelles avec précision dans différents environnements et fuseaux horaires. Commencez par time() et date() pour les cas simples, appuyez-vous sur strtotime() pour analyser les entrées humaines, et utilisez la famille DateTimeImmutable pour des calculs de dates fiables.

Pratique

Pratique
Quelles sont les fonctionnalités de la fonction 'date()' en PHP ?
Quelles sont les fonctionnalités de la fonction 'date()' en PHP ?
Was this page helpful?