Merci. Maintenant je dois trouver pourquoi setlocale ne fonctionne pas... Pourtant ça reconnait les %B, mais ne change pas la langue.
Peut-être que c'est parce que je suis sur WAMP? Pourtant WAMP est en français.
EDIT :
... ok j'ai changé pour cela et maintenant ça fonctionne.
setlocale(LC_TIME, "fr_FR", "French");
EDIT 2 :
C'est vrai qu'avec cette méthode il est impossible d'ajouter une date dans la base de donnée?
J'aurais besoin de faire en sorte que lorsque l'on envoie des informations dans la base de données via un formulaire, on envoie aussi la date dans la bdd. Au pire je recrée une date lors de l'envoie.
Affranchis-toi des locales systèmes, qui sont un vrai bazar sur lequel on ne peut pas compter, en t'orientant vers IntlDateFormatter : ça fonctionnera partout (tant que l'extension intl est active) et le résultat est en UTF-8.
J'ai un problème avec le mois de décembre ne prenant pas en compte le "é". Pourtant toute ma page est correct en UTF8, donc peut-être que c'est Wamp qui pose problème?
Y a-t-il une solution pour corriger ça?
Pourtant en ce moment ma date est comme ça en PHP et ça fonctionne très bien pour afficher la date en français :
Sous Windows, tu n'auras pas de l'UTF-8 mais du CP1252. Ce qui veut dire que si tu tiens à te baser sur setlocale, que tu dois reconvertir ta chaîne (le résultat de strftime), via iconv par exemple, de CP1252 à UTF-8. Mais tu aurais sans doute besoin d'ajouter quelques tests (if) parce que si tu l'héberges sur un serveur, tu risques encore d'avoir autre chose (de l'UTF-8 ou de l'ISO-8859-1(5) - et encore si ces locales sont activées/disponibles).
C'est bien pour ça que je t'avais recommandé d'utiliser la classe IntlDateFormatter pour avoir un code fiable et portable ...
$datefmt = new IntlDateFormatter('fr_FR', NULL, NULL, NULL, NULL, 'dd MMMM yyyy');
// pour une date qui vient d'un champ DATE(TIME) de MySQL
$date1 = date_create($row['DateJournal']);
// pour la date courante
#$date1 = date_create(); # procédural
#$date1 = new DateTime; # OO
echo $datefmt->format($date1);
Salut, encore moi. Cela fonctionne, par contre il est encore le 3 décembre chez moi et il est indiqué 4 décembre. Y a-t-il possibilité de choisir la TimeZone?
J'ai essayé avec EDT, mais ça ne fonctionne pas. Est-ce que ça fonctionne avec d'autres villes comme Montréal?
Aussi, juste pour satisfaire ma curiosité, j'ai essayé de trouver comment changer le timezone dépendamment d'où ce trouve l'utilisateur, mais je n'ai pas trouvé la bonne réponse... Connaitrais-tu quelque chose à propos de cela?
comment changer le timezone dépendamment d'où ce trouve l'utilisateur, mais je n'ai pas trouvé la bonne réponse... Connaitrais-tu quelque chose à propos de cela?
Comment le serveur pourait connaître le fuseau du client ? Si tu veux quelque chose de fiable, le plus simple c'est de le laisser le configurer/renseigner. Ca ne l'est pas en se basant sur l'IP pour tenter de déduire le pays/fuseau.
PS: Le IntlDateFormatter ne fonctionnant pas avec certaines version php/wamp.
C'est effectivement vrai pour PHP 5.2 et inférieur, mais PHP 5.2 n'est officiellement plus supportée depuis le 6 janvier 2011, aussi. En revanche, le souci ne sera jamais WAMP qui, pour autant que je me souvienne, fournissait icu avec les packages de PHP 5.3 dès que cette version a été disponible.
Et même si je me fait latter pour encore avoir posté sur du déterrage de topic, je m'en fout,
je veux crier tout haut tes louanges !!
Donc puisque je suis paresseux et que j'ai une bonne base bien remplie avec
une entrée du genre 'date_jour' -> [type] DATE (quel andouille!) [note: désormais, que du timestamp!]
et que pour des desseins futurs je dois réutiliser ma base d'abrutit,
j'ai pu grâce à tes lumières parser ma bêtise en date formatée à sauce franchouillarde :
comme ceci :
setlocale(LC_TIME,'fr_FR','french','French_France.1252','fr_FR.ISO8859-1','fra');
foreach($Arr_temp as $k => $v){
$datefmt = new IntlDateFormatter('fr_FR', NULL, NULL, NULL, NULL, 'dd MMMM yyyy');
// pour une date qui vient d'un champ DATE(TIME) de MySQL
$date1 = date_create($v['date_jour']);
// echo $datefmt->format($date1);
$obj['arr_dates'][] = $datefmt->format($date1); // hé voilà du bon camembert !
$obj['arr_visits'][] = intval($v['visites']);
}
Merci Julp, je pense te mentionner dans les contributeurs de mon petit système de boutique en ligne,
à moins que tu ne daignes y contribuer (ce serait un honneur !) le projet est bien mûr mais un regard avisé comme le tien sur les logs serait un gage de sérieux ...
Encore merci !
P.S: pour ceux qui galèrent avec le formatage: (Et vu que j'ai sur-galéré pour trouver des infos à ce sujet...)
dd MMMM yyyy -> 21 décembre 2017
dd MMM yyyy -> 21 déc. 2017
EEE dd MMM yyyy -> dim. 21 déc. 2017
EEEE dd MMM yyyy -> dimanche 21 déc. 2017
dd MM yyyy -> 21 12 2017
(bon vous comprendrez la logique)
comme dans mon code :
$obj['arr_dates'][] = ucwords($date_to_format->format($date)); // notez ucwords() devant
->Dimanche 21 Déc. 2017 ( Avec D-D ! hooo! )
- Edité par zéroraf 12 août 2018 à 21:49:49
Quand tu veux, tu peux !
Afficher une date en français
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli
julp.fr ~ PHP < 8.0.0 : activer les erreurs PDO/SQL ~ PHP < 8.1.0 : activer les erreurs mysqli