Benjamin Lévêque

Formater une date avec PHP 5.3 (l10n partie 2)

Dans cette deuxième partie consacrée à la localisation d’une application avec PHP, je vais vous montrait comment afficher différemment une date par rapport la culture de l’utilisateur.

Pour ce faire, nous allons utiliser la classe IntlDateFormatter, Dans cette classe, je vais vous présenter la méthode format qui permet de convertir un timestamp en représentation textuelle de la date.

Pour commencer, nous devons instancier la classe comme suis :

<?php
$fmt = new IntlDateFormatter('fr_FR', IntlDateFormatter::LONG, IntlDateFormatter::NONE);

La classe prend au minimum 3 arguments :

Elle peut également prendre 2 arguments en plus :

Pour les formats de la date et du temps, on doit utiliser une des 5 constantes suivantes :

Si les formats par défaut ne vous suffisent pas, vous pouvez toujours définir le format de la date avec la méthode setPattern ou directement dans le constructeur en mettant un 6ème argument. La liste des formats disponibles se trouvent sur le site du projet icu

<?php
// Exemple pour la date qui est affichée sur mon blog
$fmt = new IntlDateFormatter('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE);
// Renvoi: 30 mai 2010
echo $fmt->format(time());

// Exemple en changeant juste la langue
$fmt = new IntlDateFormatter('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::NONE);
// Renvoi: May 30, 2010
echo $fmt->format(time());

// Exemple si on utilise un format spécial
$fmt->setPattern('MMMM yyyy');
// Renvoie: May 2010 ou mai 2010
echo $fmt->format(time());

Cette classe possèdent également une méthode qui permet de faire l’inverse (parse), qui prend une chaine et qui renvoie un timestamp.

Plus d’informations sur cette classe sur la documentation officielle