PHP - Les dates
Noter ce cours :
Les dates
La gestion des dates en PHP est très simple. Vous allez voir que tout au long de ce chapitre, nous allons nous servir d'une fonction principale, la fonction date(). Nous verrons ensuite la fonction time() et mktime(). L'utilisation de ces trois fonctions constitue les bases de ce tutoriel sur les dates en PHP.
La fonction date()
Incontournable, la fonction date() s'utilise de différentes façons. Elle renvoie toujours une chaîne de caractères correspondant à ce qu'on lui a demandé (ça peut être l'heure, le jour, le mois, etc...). Attention, les paramètres renvoyés correspondront à ceux du serveur, si votre serveur a une heure déréglée, la fonction date() ne renverra pas une heure correcte. Pour que la fonction sache ce qu'on attend d'elle et qu'elle ne nous renvoie pas n'importe quoi (les minutes au lieu de l'heure par exemple) on va placer comme paramètre unique un code. Ce code se compose de différents caractères que nous allons détailler ci-dessous :
Caractère | Signification | Exemples de valeurs possibles : |
---|---|---|
Jour | ||
j | Jour du mois sur deux chiffres sans les zéros initiaux | 1 à 31 |
d | Jour du mois sur deux chiffres avec un zéro initial en fonction du jour | 01 à 31 |
l (L minuscule) | Jour de la semaine en anglais | Sunday à Saturday |
w | Jour de la semaine au format numérique | 0 (dimanche) à 6 (samedi) |
z | Jour de l'année | 0 à 366 |
Semaine | ||
W | Numéro de semaine dans l'année (les semaines commencent le lundi) | Exemple : 42 (la 42ème semaine de l'année) |
Mois | ||
F | Mois, textuel, version longue; en anglais, comme January ou December | January à December |
m | Mois au format numérique, avec zéros initiaux | 01 à 12 |
n | Mois sans les zéros initiaux | 1 à 12 |
t | Nombre de jours dans le mois | 28 à 31 |
Année | ||
L | Est ce que l'année est bissextile | 1 si bissextile, 0 sinon. |
Y | Année sur 4 chiffres | Exemples : 1999 et 2003 |
y | Année sur 2 chiffres | Exemples : 99 et 03 |
Heure | ||
a | Ante méridien et Post méridien (minuscules) | am ou pm |
A | Ante méridien et Post méridien (majuscules) | AM ou PM |
g | Heure (format 12h) sans les zéros initiaux | 1 à 12 |
G | Heure (format 24h) sans les zéros initiaux | 0 à 23 |
h | Heure (format 12h) avec les zéros initiaux | 01 à 12 |
H | Heure (format 24h) avec les zéros initiaux | 00 à 23 |
s | Secondes avec zéros initiaux | 00 à 59 |
i | Minutes avec zéros initiaux | 00 à 59 |
Par exemple, voici un cas concret : nous allons afficher l'année en cours avec la fonction date() :
<?php
echo date('Y'); //affichera l'année actuelle sur 4 chiffres
?>
Vous n'avez plus qu'à vous référer aux autres codes pour afficher ce que vous voulez. Tout ça c'est bien beau mais si vous souhaitez afficher toute une date avec un seul appel à la fonction date, comment feriez-vous ?
Si vous souhaitez afficher le mois et l'année, vous pourriez faire ceci :
<?php
echo date('m').' '.date('Y'); //affichera le mois sur deux chiffres et l'année actuelle sur 4 chiffres
?>
Cette solution est cependant peu pratique et gourmande. Vous avez un moyen bien plus simple de le faire :
<?php
echo date('m Y'); //affichera le mois sur deux chiffres et l'année actuelle sur 4 chiffres
?>
Vous allez même pouvoir formater votre date comme bon vous semble, par exemple si vous souhaitez séparer les composantes de votre date par un slash (/), vous pouvez mettre ceci :
<?php
echo date('m/Y');
?>
Le timestamp PHP
Vous allez sûrement vous demander de quoi il s'agit, et c'est normal ;) Un timestamp est un nombre qui indique le nombre de secondes qui se sont écoulées depuis le premier janvier 1970. Vous allez me dire jusque-là, "mais à quoi ça sert" ? patience, on y arrive :)
Le premier janvier 1970 à minuit, le timestamp valait 0. Il tient maintenant sur 10 chiffres, c'est dire si le nombre de secondes qui se sont écoulées depuis est important !
Pour afficher le timestamp de la seconde actuelle, on utilise la fonction time() de PHP. Voici un exemple :
<?php
echo time(); //Affiche le nombre de secondes écoulées depuis le 1er janvier 1970
?>
Par défaut, la fonction date ne demande qu'un seul paramètre comme nous l'avons vu plus haut, cela permet d'afficher par exemple le jour actuel ou encore la minute et la seconde courantes. Nous pouvons par contre, et là cela devient intéressant, afficher toutes ces informations pour un timestamp donné. La fonction date telle que nous l'avons vue correspond à ceci :
<?php
echo date('Y', time());
?>
Si nous indiquons un timestamp différent, PHP va nous retourner tout ce que vous voulez pour le timestamp donné et non pour le temps courant. Imaginez ceci :
<?php
$timestamp = time() - 3600;
echo date('j', $timestamp);
?>
PHP va vous retourner ici le jour qu'il était il y a une heure ! en effet, on utilise ici le timestamp $timestamp qui correspond au timestamp actuel (obtenu via la fonction time() auquel on a retranché 3600 secondes, soit une heure) !
Vous comprenez maintenant qu'il va être possible d'effectuer des choses très puissantes avec le timestamp de PHP. Vous venez d'apprendre comment convertir un timestamp en date avec la fonction date(), nous allons maintenant voir comment convertir une date en timestamp, vous allez voir ce n'est pas compliqué !
Conversions d'une date vers un timestamp
PHP permet de convertir une date vers un timestamp. Pour ce faire, on utilise la fonction mktime(). Elle va vous permettre à partir du jour, de l'heure, etc ... d'une date classique, d'obtenir le timestamp correspondant. Ce timestamp pourra être ensuite stocké ou encore subir des traitements. Voici la syntaxe de base de la fonction mktime() :
<?php
$timestamp = mktime(heures, minutes, secondes, mois, jour, année);
?>
Si vous voulez obtenir le timestamp du 3 janvier 1988 à 2h31 et 10 secondes, vous pouvez mettre ceci :
<?php
echo mktime(2, 31, 10, 1, 3, 1988);
?>
Chapitre suivant