Gestion des dates en PHP
Gérer les dates en PHP, voilà une question qui revient souvent dans les forums des grands sites de la communauté. Nous allons essayer ici de retracer les grandes lignes de la manipulation de dates et éventuellement quelques trucs et astuces pour optimiser votre code.
Au programme :
- Comment PHP gère-t-il les dates ?
- Que faire avec les timestamps ?
Comment PHP gère-t-il les dates ?
PHP, comme beaucoup d'applications, utilise le timestamp UNIX pour gérer les dates.
"Cool !" me direz-vous, mais qu'est-ce qu'un timestamp ?
Un timestamp UNIX est le nombre de secondes écoulées depuis le 1er janvier 1970 à 00h 00m 00s GMT. Par exemple, pour le 14/09/2006 à 15:17:16 , le timestamp correspondant est 1158239836.
Ainsi, le temps étant normalisé, il devient possible de le formater comme l'on veut.
La question suivante est : Comment récupérer le timestamp en cours ?
Il existe une fonction php "toute prête" pour l'obtenir, il s'agit de time()
Exemple :
<?php
$mavariable = time();
echo 'Le timestamp en cours est : <B>'.$mavariable.'</B>';
?>
Ce petit bout de code retournera :
Le timestamp en cours est : 1158239836.
Cette fonction permet donc de récupérer le timestamp au moment de l'exécution, mais il pourrait être intéressant de connaître le timestamp pour une date donnée.
Pour cela, il existe la fonction PHP mktime()
Elle s'utilise avec les arguments suivants :
<?php
$timestamp = mktime(int heure, int minute, int seconde, int mois, int jour,
int année, |[int heure_hiver|]);
?>
Le paramètre heure_hiver, optionnel, est là pour pouvoir spécifier si l'on est en heure d'hiver ou pas :
1 : heure d'hiver
0 : heure "normale"
-1 : (défaut) si on ne sait pas
Par conséquent, pour obtenir le timestamp correspondant au 22 mai 1981 à 00h45, il suffit de :
<?php
echo mktime(0, 45, 0, 5, 22, 1981);
?>
Simple non ?