Localiser l'heure actuelle en PHP
-
07-07-2019 - |
Question
Essayer d'afficher l'heure actuelle avec PHP (à l'aide de this ) :
$date = date('m/d/Y h:i:s a', time());
echo $date;
Aussi simple que cela devient. Comment le localiser? Je veux traduire les mois et les jours en hébreu.
Merci.
La solution
Tous les noms complets et abrégés de les mois et les jours de la semaine sont pris en charge pour plus de 130 langues. Les méthodes soutenir à la fois l'entrée et la sortie de dates en utilisant les noms localisés de mois et jours de la semaine, dans le format conventionnel associé à chaque locale.
Autres conseils
En fait, je ne pense pas que cela soit tout à fait possible sous PHP 5.2: - (
Du moins, pas avec ce qui est fourni avec / en PHP (Il existe des bibliothèques codées en PHP que vous pourriez utiliser, bien que, comme d'autres réponses le soulignent)
Cependant, avec PHP 5.3, vous avez la classe IntlDateFormatter , qui fait exactement quoi tu veux:
Cette classe représente la date de l'USI fonctionnalité de formatage. Il permet les utilisateurs pour afficher les dates dans un localisé formater ou analyser des chaînes de caractères en PHP valeurs de date en utilisant des chaînes de modèle et / ou des modèles en conserve.
Par exemple, en utilisant cette classe, comme ceci:
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('fr_FR', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('zh-Hant-TW', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::FULL, IntlDateFormatter::FULL)->format(time(time())) . "\n";
echo IntlDateFormatter::create('en_US', IntlDateFormatter::MEDIUM, IntlDateFormatter::SHORT)->format(time(time())) . "\n";
Vous obtiendrez:
dimanche 9 novembre 2008 23:54:47 GMT+00:00
9 nov. 2008 23:54
2008年11月9日星期日 下午11時54分47秒 GMT+00:00
2008/11/9 下午 11:54
Sunday, November 9, 2008 11:54:47 PM GMT+00:00
Nov 9, 2008 11:54 PM
Ce qui est plutôt joli, n'est-ce pas?
Malheureusement, PHP 5.3 n’a que quelques mois et n’est pas disponible sur de nombreux services d’hébergement ... Il faudra donc tester (et probablement corriger) cette application ...
Pensez-y: vous pouvez peut-être installer la extension int PECL sur PHP 5.2, et obtenir la même fonctionnalité ...
Si vous avez besoin d'un moyen plus simple que Zend_Date et IntlDateFormatter, essayez la fonction standard strftime
dans php. Voici ce que j'ai fait pour que le russe fonctionne sous PHP 5.3 sur Ubuntu (les paramètres régionaux russes n'étaient pas installés).
Pour installer les paramètres régionaux
-
cd / usr / share / locales
-
sudo ./install-language_pack ru_RU
-
sudo dpkg-reconfigure locales
- Redémarrez Apache
Ensuite, utilisez l'extrait de code PHP suivant:
setlocale(LC_TIME, 'ru_RU.UTF-8');
echo strftime('%A', time());
Doit être imprimé le jour de la semaine d'aujourd'hui.