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 3422 fois
Public
Internaute
Auteur de la publication
James
Membre junior
Auteur de 6 articles
|BIO_PSEUDO|
Commentaires récents

Publié par MeepMeep dans tuto

Attention, un petit correctif a apporter :
headerContent-type: $header_contenttype charset: UTF-8
Remplacer charset: UTF-8 par charsetUTF-8
La difference est subtile mais susceptible d'etre m...

Publié par robbie dans tuto

desole pour le message en multiple j'ai eu un ptit beug

Publié par foufou0406 dans CMS

merci !!!

Publié par Jacky dans tuto

Yes ! Merci pour l'astuce, c'est ce qu'il me fallait :) !

Publié par FOBEC dans CMS

Un chronomètre, des challenges et l'affichage des meilleurs scores sont prévus. Si ça vous intéresse, laissez moi un p'tit mot !!!