Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour,
Voilà je me suis crée cette fonction pour formatter les dates qui viennent de la BDD :
Dans le meilleur des mondes mon site aurait été anglophone ça aurait été nickel :
[lang=php] public function formatDateAffMois($date) { if($date != null && $date != "0000-00-00") { $myDateTime = \DateTime::createFromFormat('Y-m-d', $date); if(is_object($myDateTime)) { $date = $myDateTime->format('F Y'); } return $date; } elseif($date == "0000-00-00") { return null; } }
Mais j'ai besoin de mon mois en français ... est-ce qu'il y a une méthode prédéfinie ou je vais être obligée de me coller des ereg_replace ?
Merci
Dernière modification par amelie (23-06-2015 09:20:24)
Hors ligne
Hello
Que passe tu en paramètre de ta fonction? (2015-06-09?)
Si tu a toujours ce même format tu peu simplement faire un strtotime($date) pour avoir le timestamp et t'amuser avec.
du coup tu peu avoir quelque chose comme ça :
[lang=php] public function formatDateAffMois($date){ //check ... //end check return date('F Y', strtotime($date)); }
pour ton mois en français tu devra passer par ta date locale:
[lang=php] setlocale (LC_TIME, 'fr_FR.utf8','fra'); return strftime('Y F',strtotime($date)); //strftime se base sur la localité de la date
Sinon juste pour le principe de chipoter, ereg_replace est déprécié maintenant, il vaudrait mieux passer par preg_replace.
voilou voilou, en espérant t'avoir aidé un petit peu ^^
Dernière modification par flobrflo (09-06-2015 18:43:04)
Hors ligne
Salut,
Hum du coup je ne peux pas couper à la ligne : setlocale (LC_TIME, 'fr_FR.utf8','fra'); ... j'aurais pensé que ça pouvait être défini dans les confs de zend ... y'a pô moyen de le mettre genre dans le boostrap ?
Sinon Flo, juste pour le principe de chipoter le format de la date c'est :
$date = strftime('%B %Y', strtotime($date));
En fait je savais qu'une des deux méthodes était obsolètes mais comme c'était la fin de la journée bah j'ai eu la flemme de vérifier laquelle ^^.
Aber, danke schön ^^
Dernière modification par amelie (10-06-2015 09:37:22)
Hors ligne
Hello,
il faut toujours chipoter
Effectivement le setlocale doit être déclaré ailleurs que dans la fonction (le refaire à chaque nouvelle fonction serait très contraignant ^^).
Pour ce qui est du bon endroit, je pense que le mettre dans le "onBootstrap" de ton module d'application est une bonne piste.
Après si tu sais que ton site est uniquement en français, cela relève de la config php du serveur
Hors ligne
Salut,
Alors personnellement voici un code qui me sort le mois en français sans que je fasse quelque chose de particulier.
[lang=php] $date = new \IntlDateFormatter( $locale, \IntlDateFormatter::SHORT, \IntlDateFormatter::NONE, 'Europe/Paris', \IntlDateFormatter::GREGORIAN, 'MMMM yyyy' );
Géré par la locale
Et ensuite ne pas oublier de faire
[lang=php] $date->format($datas->getDate())
Et le lien PHP de la classe http://php.net/manual/fr/class.intldateformatter.php
Hors ligne
J'ai mis les valeurs par défaut en français dans mon intl, donc mon php.ini.
Ce qui est chouette c'est que quad j'implémente des champs "dateselect" j'ai les mois en français qui s'affichent, youhou ! *\o/*
Mais par contre, dans mon cas de figure, ça ne le fait pas :s ... warrum ?
Hors ligne