Gestion des dates en PHP
2 - La manipulation de timestamps
Maintenant que vous savez afficher l'heure courante sous différentes manières, il pourrait être intéressant de pouvoir manipuler ces timestamps pour afficher autre chose que l'heure qu'il est.
Tout à l'heure, nous avons vu que PHP avait une fonction nommée mktime(). Revoici son fonctionnement :
<?
$timestamp = mktime(int heure, int minute, int seconde, int mois, int jour,
int année, [int heure_hiver]);
?>
Comme mktime() s'attend à avoir des arguments Integer, rien ne nous empêche de lui passer une fonction date() comme argument :
<?php
$timestamp = mktime( date('H'), date('i'), date('s'), date('m'),
date('d'), date('Y') );
?>
Bon, c'est un début, mais ce petit bout de code nous retourne toujours le timestamp de l'heure en cours...
L'avantage de l'utilisation de date() est que cela nous fait introduire des variables dans le mktime().
Rien ne nous empêche de rajouter des expressions mathématiques dans le mktime pour calculer le timestamp du 1er du mois dernier à 00h00 :
<?php
$timestamp = mktime( 0, 0, 0, date('m') - 1,
1, date('Y') );
?>
Ainsi donc, dans l'exemple précédent, on a rajouté un -1 sur le date('m'), ce qui nous permet de passer en paramètre ( le mois en cours - 1 ).
Une petite application concrète pour conclure cette article : afficher les noms et dates des 5 derniers jours à partir d'aujourd'hui :
<?php
### Définitions des mois et jours
$monthes = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',
'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$days = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
for ($i = 1; $i <= 5; $i++) {
$timestamp = mktime(0, 0, 0, date('m'), (date('d') - $i), date('Y') );
$date_first = $days[date('w', $timestamp)];
$date_second = $monthes[date('n', $timestamp)];
echo 'J - '.$i.' : '.$date_first.' '.date('d', $timestamp).' ';
echo $date_second.' '.date('Y', $timestamp).'<BR>';
}
?>
Résultat :
J - 1 : Mercredi 13 Septembre 2006 J - 2 : Mardi 12 Septembre 2006 J - 3 : Lundi 11 Septembre 2006 J - 4 : Dimanche 10 Septembre 2006 J - 5 : Samedi 09 Septembre 2006
Pas trop dur non ?
Allez, à vous !