Hey les gens, j'ai affiché les données d'une bdd avec PDO mais quand je met $req->date; pour afficher par exemple "13 juillet 2015" il met 13 July 2015 j'ai essayé le str_replace mais j'arrive pas à afficher Juillet ou tout autre mois ! Qui peut m'aider?

9 réponses


Kareylo
Réponse acceptée

Utilise str_replace avec des tableaux.

$monthsEN = array('January', 'February', ...);
$monthsFR = array('Janvier', 'Février', ...);

Et ensuite tu fais le str_replace :

$datefr = str_replace($monthsEN, $monthsFR, $date);
Lartak
Réponse acceptée

Tu pourrais par exemple te faire une classe (un Helper), avec ceci à l'intérieur :

public $days = ['Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi','Dimanche'];

public $months = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'];

public function french($datetime) {
    $tmstamp = strtotime($datetime); 
    $date = $this->days[date('N', $tmstamp)-1]." ".date('d', $tmstamp).' '.$this->months[date('n', $tmstamp)-1].' '.date('Y', $tmstamp);
    return $date; 
}

Code effectué par Grafikart.

Huggy
Réponse acceptée

Il faut utiliser la bonne Locale ou récupérer la Locale du système

setlocale(LC_ALL, ""); // prend en compte les parametres systeme
date_default_timezone_set("Europe/Paris");

echo strftime("%A %d %B %Y");

mardi 09 juin 2015

Lartak
Réponse acceptée

pourquoi Huggy il y a %A %d

Regardes tout simplement ici : PHP : strftime » Liste de paramètres.

Merci pourquoi Huggy il y a %A %d

Je n'arrive pas avec str_replace voici mon code fait avec PDO :

$fr = array('Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre');
$en = array('January','February','March','April','May','June','July','August','September','October','November','Décember');
            $datefr = str_replace($en, $fr, $req->date);
             echo date("j F Y",strtotime($req->date));  

Huggy comment je paramètre pour que la date de la variable $req->date soit mise en Locale ? Peut-tu m'aider?!

Tu dois rajouter le timestamp en 2em argument de la fonction strftime
la méthode getTimestamp() d'une date renvoie un timestamp

setlocale(LC_ALL, ""); // prend en compte les parametres systeme
date_default_timezone_set("Europe/Paris");
....
echo strftime("%A %d %B %Y", $req->date->getTimestamp());

Je rajoute que si ton serveur n'est pas configuré en Français, tu peux forcer la locale comme ceci, et uniquement pour les dates et heures.

setlocale(LC_TIME, "fr");

J'ai entré vos aides mais en local(xampp) sa ne veut pas x)