Publié le 11/12/2014
Auteur James
Réseaux sociaux
0 partages
0 tweets
0 plus
0 commentaires

Afficher une date en francais

Gérer une date en PHP relève parfois du défi, les formats différents selon les pays, additionner ou soustraire des jours, voici quelques unes des taches à effectuer dans nos scripts.

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;
?>
C'est bien plus simple avec strftime(). Pour etre nickel, je vous conseille d'encoder les accents des dates avec mb_convert_encoding() par exemple en UTF-8.


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.

Ajouter un commentaire

Les champs marqués d'un * sont obligatoires, les adresses emails se sont pas publiées.

A lire aussi

Réseaux sociaux
Présentation de l'article
Catégorie
php5 - script
Mise a jour
11/12/2014
Visualisation
vu 3187 fois
Public
Internaute
Auteur de la publication
James
Membre junior
Auteur de 6 articles
|BIO_PSEUDO|
Commentaires récents

Publié par Sylvio dans tuto

J'ai découvert récemment ElRTE (couplé à  ElFinder) qui a l'air pas mal.

Publié par Absolut dans news

Bonjour,
Dans l'outil de localisation d'IP, je ne comprends pas le sens de la rubrique precision dans le Rapport d'analyse de l'adresse IP ex 1/10, 9/10, bonne, ....
Merci

Publié par Fobec dans java

As-tu essaye sans le parametre de la cle ?
(supprimer la ligne url += "&key=" + this.ApiKey;)
A priori, cela fonctionne sans aucune authentification sur l'api ;)

Publié par fobec dans logiciel

Bravo, le soft a trouvé quelques 2400 liens sur le site en un temps record.

Publié par Djrac dans tuto

Bjr.
J'ai essaye ce code mais en cliquant sur f5 il me donne un autre temps d'execution malgre qu'il s'agit du meme page PHP. Je comprends pas ou il est le probleme.
Merci de m...