PHP dispose en standard d'une foultitude de fonctions : une
caractéristique qui a fait beaucoup pour son adoption rapide.
Seulement, il n'est pas toujours facile d'aller plus loin, et notamment
de "forcer" certaines fonctions à agir comme on
le voudrait. Pour illustrer cet état de fait, nous nous penchons
ici spécifiquement sur les
fonctions de gestion de date.
Afficher
la date
Il s'agit
simplement d'afficher une date au format 01/02 ou 01/02/03. La fonction
date()
nous ouvre plusieurs options, et nous n'avons qu'à choisir
parmi elles.
Pour l'affichage des jours, nous pouvons aussi choisir entre "d"
(de 01 à 31), "D" (de Mon à Sun - en anglais,
donc), "j" (de 1 à 31), "l" (L minuscule
- de Monday à Sunday) et "z" (0 à
365 - le jour de l'année).
Du choix aussi pour le mois : "F" (de January à
December), "m" (de 01 à 12), "n"
(de 1 à 12) et "M" (de Jan à Dec).
Enfin, l'année, plus simple : "y" (03) ou "Y"
(2003).
Ensuite, la "mise en page" de la date se fait en combinant
les diverses options :
2003-09-12 : <?=date("Y-m-d");?>
12/09/2003 : <?=date("d/m/Y");?>
Le 12/09 : <?=date("\L\e
d/m");?>
Nous
sommes le 12 du 9e mois de l'année 2003 :
<?="Nous sommes
le " . date("d") . " du " . date("n") . "e mois de l'année " . date("Y");?>
En renvanche,
il est difficile d'afficher la date complète - nos "mardi"
et "décembre" habituels se trouvent imprimé
en anglais :
<?="Nous sommes
le " . date("l j F Y");?> donnera "Nous sommes
le Friday 12 September 2003", ce qui n'est pas vraiment ce
que l'on peut attendre.
Afficher
la date complète en français
Il nous
faut travailler un peu plus pour afficher la date en bon français,
et donc créer une fonction qui remplacera complètement
date(). Voici une fonction qui prend
en argument le jour (deux chiffres), le mois (deux) et l'année
(quatre) et renvoi la date correctement formatée :
function datefr($jj, $mm,
$aaaa)
{
$userDate = mktime(0,0,0,$mm,$jj,$aaaa);
$jours = array('dimanche', 'lundi', 'mardi', 'mercredi',
'jeudi', 'vendredi', 'samedi');
$mois = array('', 'janvier', 'février', 'mars', 'avril',
'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre',
'décembre');
return $jours[date("w", $userDate)] . " " . $jj . "
" . $mois[date("n", $userDate)] . " " . $aaaa;
}
Explications :
La fonction mktime()
ne permet de "créer" une date, c'est-à-dire
de définir (et conserver) un "timestamp"
d'un moment choisi, dans le passé comme le futur. Un timestamp
un nombre correspondant au nombre de secondes s'étant
écoulé entre la date donnée et le 1er janvier
1970 (début de l'époque UNIX). Les arguments de
la fonction prennent en compte la date américaine, donc il
faut faire attention à bien placer ses valeurs : mktime(heure,minute,seconde,mois,jour,annee).
date(w) renvoi le numéro
du jour de la semaine, 0 correspondant à dimanche et 6 à
samedi (des données destinées à notre tableau
$jours qui place dimanche à
l'index 0).
Pour le mois, nous nous servons directement du numéro du
mois (de 1 à 12), c'est pourquoi notre tableau $mois
commence par un champ vide, "janvier" étant placé
à l'index 1.
Nous renvoyons ensuite directement la ligne finale.
Résultat
:
<?=datefr(21,04,1977);?>
donnera "jeudi 21 avril 1977"
<?="Nous
sommes le " . datefr(date(d),date(m),date(Y));?> donnera
"Nous sommes le vendredi 12 septembre 2003".
Page 1 | 2
|