PHP Version: 4+ PHP Évolution : - PHP 5.1 : Affiche maintenant les erreurs de fuseau horaire E_STRICT et E_NOTICE - PHP 8.0.0 timestamp est désormais nullable.
La fonction localtime() — Récupère l'heure locale.
La fonction localtime() retourne un tableau identique à la structure retournée par la fonction C localtime.
localtime() fonction php Syntaxe
localtime(timestamp,is_associative)
Liste de paramètres de la fonction localtime()
Paramètre
Description
timestamp
Le paramètre optionnel timestamp est un timestamp Unix de type entier qui vaut par défaut l'heure courante locale si le paramètre timestamp n'est pas fourni. En d'autres termes, il faut par défaut la valeur de la fonction time().
is_associative
si défini à FALSE ou ignoré, force localtime() à retourner un tableau à index numérique. S'il est mis à TRUE,
localtime() retourne un tableau associatif, avec tous les éléments de la structure C, accessible avec les clés. Les noms des différentes clés du tableau associatif sont les suivants :
"tm_sec" : secondes
"tm_min" : minutes
"tm_hour" : heure
"tm_mday" : jour du mois. Les mois commencent à 0 (Janvier) à 11 (Décembre) et
les jours de la semaine commencent à 0 (Dimanche) à 6 (Samedi).
"tm_mon" : mois de l'année, commence par 0 pour Janvier
"tm_year" : Année depuis 1900
"tm_wday" : Jour de la semaine
"tm_yday" : Jour de l'année
"tm_isdst" : Est-ce que l'heure d'hiver a pris effet ?
localtime() fonction php Exemplepratique d'utilisation
La fonction localtime() en PHP est utilisée pour convertir un timestamp Unix en un tableau associatif contenant des informations sur la date et l'heure locale. Voici quelques exemples pratiques d'utilisation et des cas d'utilisation spécifiques :
Affichage d'une date lisible par l'humain :
Supposons que vous avez un timestamp Unix stocké dans une base de données ou dans un fichier. Vous pouvez utiliser localtime() pour le convertir en un format lisible par l'humain, en affichant la date et l'heure dans votre propre format personnalisé :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Affichage d'une date lisible par l'humain </title>
</head>
<body>
<?php
$timestamp = time(); // Obtenez le timestamp Unix actuel
$localTime = localtime($timestamp, true); // Convertit le timestamp en un tableau associatif
// Affiche la date et l'heure dans un format personnalisé
echo sprintf("Date actuele : %04d-%02d-%02d, Heure actuele : %02d:%02d:%02d",
$localTime['tm_year'] + 1900,
$localTime['tm_mon'] + 1,
$localTime['tm_mday'],
$localTime['tm_hour'],
$localTime['tm_min'],
$localTime['tm_sec']
);?>
</body>
</html>
Calcul de la durée entre deux dates :
Vous pouvez utiliser localtime() pour obtenir les informations de date et d'heure de deux timestamps et ensuite calculer la différence entre ces deux dates, par exemple pour déterminer la durée entre deux événements :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Calcul de la durée entre deux dates </title>
</head>
<body>
<?php
$timestamp1 = strtotime('2023-01-15 10:00:00');
$timestamp2 = strtotime('2023-07-25 15:30:00');
$localTime1 = localtime($timestamp1, true);
$localTime2 = localtime($timestamp2, true);
// Calcul de la différence entre les deux timestamps
$diffYears = $localTime2['tm_year'] - $localTime1['tm_year'];
$diffMonths = $localTime2['tm_mon'] - $localTime1['tm_mon'];
$diffDays = $localTime2['tm_mday'] - $localTime1['tm_mday'];
echo sprintf("Différence : %d années, %d mois, %d jours",
$diffYears, $diffMonths, $diffDays
);
?>
</body>
</html>
Ce code en PHP permet de calculer la différence entre deux dates et heures données en utilisant des timestamps (valeurs entières représentant le nombre de secondes depuis le 1er janvier 1970).
Voici une explication ligne par ligne :
1. `$timestamp1 = strtotime('2023-01-15 10:00:00');`
- Cette ligne utilise la fonction `strtotime()` pour convertir la date et l'heure `'2023-01-15 10:00:00'` en un timestamp. Le résultat est stocké dans la variable `$timestamp1`.
2. `$timestamp2 = strtotime('2023-07-25 15:30:00');`
- De manière similaire à la ligne précédente, cette ligne convertit la date et l'heure `'2023-07-25 15:30:00'` en un timestamp, qui est ensuite stocké dans la variable `$timestamp2`.
3. `$localTime1 = localtime($timestamp1, true);`
- Cette ligne utilise la fonction `localtime()` pour convertir le premier timestamp `$timestamp1` en un tableau associatif représentant les informations de date et d'heure locale. Le deuxième argument (`true`) indique que nous voulons que les valeurs soient stockées dans un tableau associatif plutôt que dans un tableau numérique.
4. `$localTime2 = localtime($timestamp2, true);`
- Cette ligne fait la même chose que la ligne précédente, mais pour le deuxième timestamp `$timestamp2`.
5. Calcul de la différence entre les deux timestamps :
- Les valeurs numériques des années, des mois et des jours sont extraites des tableaux associatifs des dates/heures locales pour les deux timestamps.
6. `$diffYears = $localTime2['tm_year'] - $localTime1['tm_year'];`
- Cette ligne calcule la différence entre les années du deuxième timestamp (`$localTime2['tm_year']`) et du premier timestamp (`$localTime1['tm_year']`).
7. `$diffMonths = $localTime2['tm_mon'] - $localTime1['tm_mon'];`
- Cette ligne calcule la différence entre les mois du deuxième timestamp (`$localTime2['tm_mon']`) et du premier timestamp (`$localTime1['tm_mon']`).
8. `$diffDays = $localTime2['tm_mday'] - $localTime1['tm_mday'];`
- Cette ligne calcule la différence entre les jours du deuxième timestamp (`$localTime2['tm_mday']`) et du premier timestamp (`$localTime1['tm_mday']`).
9. `echo sprintf("Différence : %d années, %d mois, %d jours", $diffYears, $diffMonths, $diffDays);`
- Enfin, cette ligne affiche le résultat sous forme d'une chaîne de caractères en utilisant la fonction `sprintf()`. Les valeurs calculées `$diffYears`, `$diffMonths`, et `$diffDays` sont insérées dans la chaîne de format à l'aide des spécificateurs de format `%d` pour les nombres entiers. Le résultat sera quelque chose comme : "Différence : 0 années, 6 mois, 10 jours", représentant la différence entre les deux dates.
echo sprintf("Date : %04d-%02d-%02d, Heure : %02d:%02d:%02d", ...);: Cette ligne utilise la fonction sprintf() pour formater la date et l'heure à partir des éléments extraits du tableau $localTime.
%04d signifie que l'année doit être affichée sur 4 chiffres en ajoutant des zéros à gauche si nécessaire.
%02d signifie que le mois et le jour du mois doivent être affichés sur 2 chiffres avec des zéros à gauche si nécessaire.
%02d signifie que l'heure, les minutes et les secondes doivent être affichées sur 2 chiffres avec des zéros à gauche si nécessaire.
Les valeurs à afficher sont passées en arguments après la chaîne de formatage, dans l'ordre spécifié.
Gestion de fuseaux horaires
La fonction localtime() prend en compte le fuseau horaire du serveur PHP. Si vous devez travailler avec des fuseaux horaires différents, vous pouvez utiliser date_default_timezone_set() pour définir un fuseau horaire spécifique avant d'utiliser localtime() :
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<title>Gestion de fuseaux horaires </title>
</head>
<body>
<?php
date_default_timezone_set('Europe/Paris'); // Définir le fuseau horaire à Paris
$timestamp = time(); // Obtenez le timestamp Unix actuel dans le fuseau horaire défini
$localTime = localtime($timestamp, true);
// Affiche la date et l'heure dans le fuseau horaire spécifié
echo sprintf("Date : %04d-%02d-%02d, Heure : %02d:%02d:%02d",
$localTime['tm_year'] + 1900,
$localTime['tm_mon'] + 1,
$localTime['tm_mday'],
$localTime['tm_hour'],
$localTime['tm_min'],
$localTime['tm_sec']
);
?>
</body>
</html>
Ce code en PHP permet d'afficher la date et l'heure actuelles dans le fuseau horaire de Paris. Voici une explication ligne par ligne :
1. `date_default_timezone_set('Europe/Paris');`: Cette ligne définit le fuseau horaire par défaut à 'Europe/Paris'. Cela signifie que toutes les opérations de date et d'heure ultérieures utiliseront le fuseau horaire de Paris par défaut, sauf si spécifié autrement.
2. `$timestamp = time();`: La fonction `time()` renvoie le timestamp Unix actuel, qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC (Temps Universel Coordonné). Ce timestamp est obtenu dans le fuseau horaire défini précédemment (Paris, dans ce cas).
3. `$localTime = localtime($timestamp, true);`: La fonction `localtime()` prend un timestamp Unix en entrée et renvoie un tableau associatif contenant les informations de date et d'heure pour ce timestamp dans le fuseau horaire local (défini par `date_default_timezone_set`). Le deuxième argument à `localtime()` est un booléen facultatif qui, lorsqu'il est défini à `true`, retourne un tableau associatif plutôt qu'un tableau numérique.
4. `echo sprintf("Date : %04d-%02d-%02d, Heure : %02d:%02d:%02d", ...);`: Cette ligne utilise la fonction `sprintf()` pour formater une chaîne de caractères qui affiche la date et l'heure dans le fuseau horaire spécifié. Les arguments passés à `sprintf()` sont les éléments qui remplaceront les spécificateurs de format dans la chaîne. Voici comment les spécificateurs de format sont utilisés :
- `%04d`: Représente l'année sur quatre chiffres.
- `%02d`: Représente un nombre sur deux chiffres (mois, jour, heure, minute, seconde).
Les valeurs utilisées pour remplacer ces spécificateurs de format proviennent du tableau associatif `$localTime` obtenu précédemment.
5. `$localTime['tm_year'] + 1900`: L'élément 'tm_year' du tableau `$localTime` contient le nombre d'années écoulées depuis 1900. Donc, pour obtenir l'année réelle, nous ajoutons 1900.
6. `$localTime['tm_mon'] + 1`: L'élément 'tm_mon' du tableau `$localTime` contient le numéro du mois (0 pour janvier, 1 pour février, etc.). Nous ajoutons 1 pour obtenir le mois réel (1 pour janvier, 2 pour février, etc.).
7. Les autres éléments du tableau `$localTime` sont directement utilisés pour afficher l'heure, les minutes et les secondes.
En résumé, ce code définit le fuseau horaire à Paris, obtient le timestamp actuel dans ce fuseau horaire, puis affiche la date et l'heure dans ce fuseau horaire spécifié sous la forme "Date : AAAA-MM-JJ, Heure : HH:MM:SS".
Astuces et conseils d'utilisation pour la fonction `localtime()` en PHP
Voici quelques astuces et conseils d'utilisation pour la fonction `localtime()` en PHP :
1. Timestamp Unix :
La fonction `localtime()` prend en entrée un timestamp Unix, qui représente le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Assurez-vous de fournir un timestamp valide en utilisant des fonctions comme `time()` pour obtenir le timestamp actuel, ou `strtotime()` pour convertir une date en timestamp.
2. Deuxième argument :
`localtime()` a un deuxième argument facultatif, qui est un booléen permettant de spécifier si le tableau résultant doit être associatif (true) ou numérique (false). Par défaut, c'est false, ce qui signifie que les indices du tableau seront numériques (0 pour les secondes, 1 pour les minutes, etc.). Si vous passez true, les indices seront associatifs (clés comme 'tm_sec', 'tm_min', etc.).
3. Gestion du fuseau horaire :
`localtime()` est sensible au fuseau horaire défini dans la configuration PHP. Assurez-vous que le fuseau horaire est correctement configuré en utilisant `date_default_timezone_set()` ou en définissant le fuseau horaire dans le fichier php.ini. Cela garantit que les valeurs de date et d'heure retournées sont correctes pour votre zone.
4. Conversion de timestamp en date lisible par l'humain :
Pour afficher une date lisible par l'humain à partir du tableau renvoyé par `localtime()`, vous devez ajouter 1900 à la valeur de l'année (`$localTime['tm_year'] + 1900`) et ajouter 1 au mois (`$localTime['tm_mon'] + 1`). Les mois sont représentés de 0 à 11 et les années de 1900.
5. Valeurs limitées par le système :
Le tableau retourné par `localtime()` est limité aux valeurs du système sous-jacent pour les dates et heures. Par exemple, les valeurs des jours de la semaine (`tm_wday`) sont représentées de 0 à 6 (dimanche à samedi) et les valeurs des mois (`tm_mon`) vont de 0 à 11 (janvier à décembre).
6. Compatibilité avec d'autres fonctions :
Si vous avez besoin de manipuler davantage la date et l'heure, vous pouvez convertir le tableau retourné par `localtime()` en timestamp Unix à l'aide de la fonction `mktime()` ou en chaîne de date à l'aide de la fonction `strftime()`.
exemple:
7. Considérations sur l'heure d'été :
La valeur `tm_isdst` dans le tableau résultant indique si l'heure d'été est active (1) ou non (0). L'heure d'été peut affecter certaines opérations, alors assurez-vous de prendre en compte cette valeur si vous travaillez avec des dates sensibles à l'heure d'été.
Globalement, la fonction `localtime()` est utile pour obtenir des informations détaillées sur une date et une heure spécifique dans le fuseau horaire du serveur. En comprenant bien les valeurs renvoyées par cette fonction et en manipulant correctement les dates et heures, vous pouvez l'utiliser efficacement dans vos projets PHP.