Manier les dates en français
Manipuler les dates en PHP peuvent se révéler fastidieux si l’on ne connait pas les « bonnes » fonctions à utiliser.
Si strtotime() ou strftime() ne vous parlent pas (encore) alors il est temps de lire cet article.
Rentrons directement dans le vif du sujet en imaginant la demande suivante :
« Pouvez-vous afficher la version littérale de 25-12-2009… ? ».
Le 1er réflexe en prenant sa toque est de se dire :
« Je passe la chaîne de caractères et les fonctions explode(), mktime(), date() au mixer puis je les assaisonne avec 2 tableaux contenant le nom des mois pour l’un et le nom des jours pour l’autre ».
On se rend compte rapidement que le temps de préparation de cette recette est assez long pour un résultat pas toujours réutilisable…
Et si on utilisait d’autres ingrédients ?
//décalage horaire par défaut utilisé par toutes les fonctions date/heure
date_default_timezone_set('Europe/Paris');
//configuration locale pour strftime()
setlocale(LC_TIME, 'fr_FR', 'fra');
$masque = '%A %d %B %Y %H:%M:%S';
//affiche : mercredi 25 décembre 1929 00:00:00
echo strftime($masque, strtotime('12/25/1929'));
//affiche : mercredi 25 décembre 1929 00:00:00
echo strftime($masque, strtotime('25-12-1929'));
//affiche : mercredi 25 décembre 1929 00:00:00
echo strftime($masque, strtotime('1929-12-25'));
L’utilisation des ingrédients strtotime() et strftime() permet d’obtenir le résultat souhaité en 2 coups de cuillère à pot… en laissant entrevoir des recettes plus alléchantes.
Imaginons par exemple la création d’un calendrier :
//décalage horaire par défaut utilisé par toutes les fonctions date/heure
date_default_timezone_set('Europe/Paris');
//configuration locale pour strftime()
setlocale(LC_TIME, 'fr_FR', 'fra');
$calendrier = new stdClass();
//Mon calendrier débute le 1er janvier 2009
$calendrier->dDebut = strtotime('01-01-2009');
//Et se termine 2 mois + tard
$calendrier->dFin = strtotime('+2 months', $calendrier->dDebut);
//Liste des jours selon le numéro et le jour de la semaine en vu d'un affichage html
$calendrier->jours = array();
$tmp = $calendrier->dDebut;;
while ($tmp => $calendrier->dFin) {
$calendrier->jours[date('W', $tmp )][date('w', $tmp )] = strftime('%A %d %B %Y', $tmp );
$tmp = strtotime('+1 day', $tmp );
}
echo '<pre>';
print_r($calendrier->jours);
echo '</pre>';
Petite particularité de cet exemple est l’utilisation de la classe stdClass. Celle-ci est « la classe mère racine de PHP », elle est vide et permet de construire une classe à la volée.
A vous maintenant de vous improviser maître-queux…
Liens :
2 commentaires
Manier les dates en français | DevZone – Zone de développement web…
Quelles sont les « bonnes » fonctions à utiliser pour manipuler les dates ? Si strtotime() ou strftime() ne vous parlent pas il est temps de lire cet article….
Salut,
tout d’abors je suis arrivé sur ce blog tout à l’heure, j’aime bien le design clair, propre et pas trop chargé .
strftime Formate une date/heure locale avec la configuration locale donc fonctionnant avec date_default_timezone_set(‘Europe/Paris’); et setlocale(LC_TIME, ‘fr_FR’, ‘fra’);
strtotime Transforme une chaîne de caractère en timestamp
Déposez un commentaire