L’essentiel de la gestion des timestamps en PHP

Les timestamps jouent un rôle essentiel dans le développement web, notamment lorsqu’il s’agit de gérer des informations liées aux dates et heures. Dans cet article, nous vous présenterons les bases de la gestion des timestamps en PHP, ainsi que différentes méthodes pour travailler avec ces derniers.

Comprendre le concept de timestamp

Un timestamp est un nombre entier qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit (heure UTC). Cette date, également connue sous le nom d’époque Unix, sert de point de référence pour les langages de programmation tels que PHP afin de manipuler les données temporelles.

La principale raison d’utiliser des timestamps est leur simplicité : il suffit d’une simple valeur numérique pour stocker et manipuler n’importe quelle information de temps. De plus, les timestamps sont indépendants du fuseau horaire, ce qui facilite grandement la gestion des dates dans un contexte international.

Obtenir le timestamp actuel en PHP

Pour obtenir le timestamp actuel en PHP, on utilise la fonction time(). Celle-ci retourne la valeur du nombre de secondes écoulées depuis l’époque Unix jusqu’à l’instant présent :

$timestamp = time();
echo $timestamp;

Cela affichera quelque chose comme 1633104558, représentant le nombre de secondes écoulées entre le 1er janvier 1970 et le moment où la fonction a été appelée. (N’hésitez pas à vérifier manuellement l’heure correspondante sur un site de conversion en ligne comme Epoch Converter.)

Convertir un timestamp en une date lisible

Afficher un timestamp brut n’est souvent pas très utile, surtout si vous voulez présenter cette information à des utilisateurs non techniques. Pour convertir un timestamp en une date et heure formatées, on utilise la fonction date() en PHP :

$date_formattee = date("d-m-Y H :i :s", $timestamp);
echo $date_formattee;

Ce code retournera une chaîne de caractères semblable à « 01-10-2021 23 :87 :38« . La fonction date() prend deux arguments : le premier est une chaîne définissant le format de la date et du temps, et le second est le timestamp à convertir. Les lettres entre guillemets sont des codes représentant les différentes parties d’une date; vous pouvez consulter la documentation officielle pour avoir la liste complète des codes de formatage disponibles.

Manipuler les timestamps en PHP

Ajouter ou soustraire du temps à un timestamp

Puisqu’un timestamp représente simplement un nombre de secondes écoulées depuis l’époque Unix, il est facile d’ajouter ou de soustraire une durée spécifique à un timestamp. Par exemple, pour ajouter trois jours (soit 3 * 24 * 60 * 60 = 259200 secondes) à un timestamp :

$timestamp_futur = $timestamp + 259200;
echo date("d-m-Y H :i :s", $timestamp_futur);

De la même manière, pour soustraire deux heures (soit 2 * 60 * 60 = 7200 secondes) d’un timestamp :

$timestamp_passe = $timestamp - 7200;
echo date("d-m-Y H :i :s", $timestamp_passe);

Trouver le nombre de jours entre deux timestamps

Les opérations sur les timestamps permettent également de calculer facilement la différence temporelle entre deux dates. Par exemple, pour connaître le nombre de jours qui séparent deux timestamps :

$difference_en_secondes = $second_timestamp - $first_timestamp;
$jours_de_difference = floor($difference_en_secondes / 86400);
echo $jours_de_difference;

Dans cet exemple, on divise la différence en secondes par 86400 (le nombre de secondes dans une journée) et on arrondit vers le bas pour obtenir un nombre entier de jours.

Travailler avec les fuseaux horaires

Comme mentionné précédemment, les timestamps sont indépendants des fuseaux horaires. Cependant, PHP propose des fonctions permettant de gérer efficacement les fuseaux horaires lors de la manipulation des données temporelles.

Définir le fuseau horaire par défaut

Pour définir un fuseau horaire par défaut pour les fonctions de date et heure PHP, on utilise la fonction date_default_timezone_set() :

date_default_timezone_set("Europe/Paris");

Cette fonction prend en argument une chaîne représentant un fuseau horaire au format « Continent/Ville ». Vous pouvez consulter la liste complète des fuseaux horaires supportés dans la documentation PHP.

Convertir un timestamp entre différents fuseaux horaires

Pour convertir un timestamp d’un fuseau horaire à un autre, on utilise la classe DateTime et la méthode setTimezone() :

$timestamp_utc = 1633070000;

$date = new DateTime("@$timestamp_utc", new DateTimeZone("UTC"));
$date->setTimezone(new DateTimeZone("Europe/Paris"));

echo $date->format("d-m-Y H :i :s");

Ce code affichera « 01-10-2021 21 :40 :00 » (heure française), soit la conversion du timestamp UTC 1633070000.

Récapitulatif

En somme, la gestion des timestamps en PHP est simple et puissante. Les fonctions de base telles que time() et date() permettent respectivement d’obtenir le timestamp actuel ou de formater ce dernier en une chaîne de caractères lisible. De plus, les opérations arithmétiques sur les timestamps facilitent grandement la manipulation des données temporelles, tandis que la classe DateTime offre une grande flexibilité pour travailler avec les fuseaux horaires.

Ces notions de base sont essentielles pour tout développeur PHP, et il existe encore bien d’autres fonctions et techniques à explorer pour mieux maîtriser l’utilisation des timestamps en PHP.

Retour en haut