Afficher vos date et heure locales - Les clefs du PHP

Le programme proposé ici est l’occasion de revoir des fonctions imbriquées
ainsi que d’autres notions telles que les dates, les tableaux et
l’opérateur de contrôle d’erreur.

Pour afficher le jour de la semaine en français, nous créons un tableau car
le jour est un nombre de 0 à 6 en partant du dimanche. Le paramètre
envoyé $moment est un timestamp que nous calculons avant l’appel.

Nous tenons compte du décalage avec l’heure GMT pendant l’heure
d’hiver. L’heure d’hiver commence le dernier dimanche d’octobre à 1h
GMT et finit le dernier dimanche de mars à 1h GMT.



<?
function affiche_jour($moment){
$jour=date("w", $moment);
$les_jours=array(’dimanche’, ’lundi’, ’mardi’, ’mercredi’,
’jeudi’, ’vendredi’, ’samedi’);
$jour=$les_jours[$jour];
return $jour;
}


Cette fonction affiche_mois() affiche le mois en français (pas de
capitales en français).

function affiche_mois ($moment){
$mois=date("n", $moment);//le mois sans 0 devant
$les_mois=array(’’, ’janvier’, ’février’, ’mars’,
’avril’, ’mai’, ’juin’, ’juillet’,
’août’, ’septembre’, ’octobre’,
’novembre’, ’décembre’);
$mois=$les_mois[$mois];
return $mois;
}


Voici maintenant la fonction principale qui contient l’algorithme et
appelle les autres fonctions pour se nourrir :

function affiche_date_locale($moment){
$decalage_hiver=1;


Nous vérifions d’abord si un paramètre a été envoyé. Si ce n’est pas le cas,
nous prenons le TIMESTAMP Unix courant :

if (!$moment){
$temps=time();
}
else {
$temps=$moment;
}


Nous créons les TIMESTAMP Unix des moments du changement d’heure
pour l’année en cours en heure GMT. Il suffit de trouver le jour de semaine
du 31 mars, puis en sachant que le dimanche est un jour 0, d’enlever le
nombre du jour de semaine à 31 pour obtenir la date :

$jourdesemaine=gmdate("w", mktime(1,0,0, 3,31,gmdate("Y")));
//variable pour connaître le jour de semaine du 31 mars
$limite_inf=mktime(1,0,0, 3,31-$jourdesemaine,gmdate("Y"));
/*variable pour trouver le dernier dimanche de mars pour l’année
courante*/
$jourdesemaine=gmdate("w", mktime(1,0,0, 10,31,gmdate("Y")));
/*variable pour connaître le jour de semaine du 31 octobre*/
$limite_sup=mktime(1,0,0, 10,31-$jourdesemaine,gmdate("Y"));

/*variable pour trouver le dernier dimanche d’octobre pour l’année
courante*/


Maintenant, nous testons la date pour savoir si elle est comprise entre les
deux limites. Dans ce cas, elle est en heure d’été :

if ($temps>$limite_inf && $temps<$limite_sup){
$decalage=$decalage_hiver+1;
}
else {
$decalage=$decalage_hiver;
}
$moment=mktime(gmdate("G")+$decalage,gmdate("i"),0,
gmdate("n"),gmdate("j"),gmdate("Y"));


Enfin, nous fabriquons le timestamp avec mktime(), en incluant le
décalage avec l’heure GMT :

Fonctions d’affichage de date : date.php
$ladate=affiche_jour($moment) ." ".date("j", $moment)." ".
affiche_mois($moment) ." ". date("Y", $moment);
/*la date inclut le mois en français grâce à l’appel de
la fonction.*/
$heure = date("G",$moment);
$minute = date("i", $moment);
$ladate.="<BR>";
$ladate.="$heure";
$ladate.="h";
$ladate.="$minute";
return $ladate;
}
echo @affiche_date_locale();
/*Vous faites précéder la fonction du @ pour éviter le
message d’erreur si vous n’envoyez pas de paramètre*/
?>

Aucun commentaire:

Enregistrer un commentaire