Qu'est ce qu'une date
Les dates sont utilisées dans tous les pays avec les langues différentes et parfois un format spécifique. Il a fallu trouver une unité commune pour qu'une date soit la même dans les différentes régions du monde: le timestamp.En PHP, la valeur en cours est obtenu ainsi:
<?php
//Affiche le timestamp actuel
echo date("U");
?>
A quoi correspond ce long numéro ?
Le timestamp est le nombre de secondes écoulées depuis le 1er janvier 1970. Cette manière de stocker une date sous forme de nombre seconde présente l'avantage d'être commun dans tous les pays. Par dessus, on y stocke les fuseaux horaires pour pouvoir communiquer une date juste suivant chaque région du monde.
Formater une date dans un langue
Le timestamp sert à stocker une date, par contre ça ne sert à rien de l'afficher dans une page HTML car cette valeur est incompréhensible. Le but de l'article est d'écrire une date dans le format courant, c-a-d jeudi le 11 décembre 2014.Representation d'une date par constante
Il y a encore peu de temps, il n'existait aucun mécanisme pour afficher une date longue directement à partir de PHP. La fonction date() permet de formater une date par contre la langue française n'est pas supportée. Dans le script ci-dessous, nous allons extraire les données suivantes d'un Timestamp:- le numéro du jour,
- le numéro du mois
pour ensuite le convertir dans le mot correspondant dans la langue francaise.
<?php
//Tableau de constante des jours
$JOURS=array("", "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche");
//Tableau de constante des mois
$MOIS=array("", "Janvier", "Fevrier", "Mars", "Avril", "Mai", "Juin", "Juillet", "Aout", "Septembre", "Octobre", "Novembre", "Decembre");
//timestamp actuel
$timestamp=date("U");
//indice du jour de 1 à 7
$numero_jour=date('N', $timestamp);
$jour=date('j', $timestamp);
//indice du mois de 1 à 12
$numero_mois=date('n', $timestamp);
$annee=date('Y', $timestamp);
//Jeudi, le 11 Decembre 2014
$date_fr=$JOURS[$numero_jour].', le '.$jour.' '.$MOIS[$numero_mois].' '.$annee;
echo $date_fr;
?>
Nous obtenons une belle date écrit en français. Par contre, il faut établir un tableau de constante pour chaque pays.
Afficher une date en fonction d'un fuseau horaire
La plateforme PHP a évolué et aujourd'hui ils existent toutes les fonctions pour afficher une date dans la langue du pays. De plus, elles permettent de respecter le fuseau horaire de chaque région du monde.<?php
$timestamp=date("U");
/* Définir la configuration */
setlocale (LC_TIME, 'fr_FR','fra');
//fixer le décalage horaire
date_default_timezone_set("Europe/Paris");
//jeudi, le 11 decembre 2014
$date_fr=strftime('%A, le %d %B %Y' ,$timestamp);
echo $date_fr;
?>
J'espère que l'article vous aidera pour afficher une date en francais et même dans toutes les langues du monde. Avec la fonction strftime(), un timestamp peut facilement être afficher dans n'importe quel format.
Merci à Fobec pour sa relecture.