Je suggère en utilisant la bibliothèque de fonctions à la place intl
, telles que IntlDateFormatter
. Ce qui vous permettra de produire des données localisées sans avoir besoin de changer les paramètres régionaux globaux avec setlocale()
.
La bibliothèque Intl peut également vous permettre d'afficher une liste des paramètres régionaux pris en charge, vous pouvez utiliser var_dump(ResourceBundle::getLocales(''));
Exemple:. https://3v4l.org/BKCRo(remarquez comment setlocale(LC_ALL, 'es_ES')
n'a pas d'effet sur la sortie
$esDate = datefmt_create('es_ES', //output locale
\IntlDateFormatter::FULL, //date type
\IntlDateFormatter::NONE, //time type
'America/Los_Angeles', //time zone
IntlDateFormatter::GREGORIAN, //calendar type
'dd LLLL, YYYY'); //output format
echo $esDate->format(new \DateTime);
Résultat :
18 diciembre, 2017
Pour obtenir la liste des formats de date pris en charge patt Erns voir: http://userguide.icu-project.org/formatparse/datetime
Comme une note pour setlocale()
, chaque système est différent et pas tous les paramètres régionaux peuvent être pris en charge par votre distribution de PHP et le système d'exploitation du serveur.
Lors de l'utilisation de Linux, vous pouvez utiliser locale -a
depuis un terminal de console ou system('locale -a', $locales); var_dump($locales);
depuis PHP, pour déterminer les paramètres régionaux pris en charge. Lorsque vous utilisez Windows, vous pouvez afficher les paramètres régionaux pris en charge par le système en accédant au Control Panel->Language
ou au Control Panel->International Settings
. Voir https://msdn.microsoft.com/en-us/library/cc233982.aspx pour plus de détails sur les paramètres régionaux pris en charge pour différentes versions de Windows. Si vous utilisez setlocale()
, assurez-vous de fournir toutes les variantes possibles dans un tableau des paramètres régionaux souhaités, par ordre de priorité de gauche à droite, afin de réduire la probabilité de retour false
.
par exemple.
setlocale(LC_TIME, array('es_ES.UTF-8', 'es_ES', 'es-ES', 'es', 'spanish', 'Spanish'));
Je pense que la date simple et strtotime résoudra ce –
setlocale (LC_TIME, 'es_ES'); ' – Zl3n