Date, jour en toute lettre.

Mammouth du PHP | 613 Messages

16 mai 2019, 10:35

Bonjour,
de ma base je récupère des dates.
Je voudrais savoir si il est possible avec date_parse d'avoir le mois en toute lettre ?

Code : Tout sélectionner

$date = date_parse($result['dateacti']); $jour = $date['day']; $mois = $date['month']; $annee = $date['year'];
Actuellement l'affichage ne se fait que en chiffre.

Mammouth du PHP | 652 Messages

16 mai 2019, 11:18

Salut, si tu veux formater une date, tu as la bonne vieille fonction date ou la fonction strftime, mais aujourd'hui on a plutôt tendance à utiliser la class DateTime et sa méthode format.

En admettant que la date remontée de la base soit au bon format :
$date = new DateTime($result['dateacti']);
echo $date->format('F');

Le mois sera à priori retourné en anglais. Je ne suis pas sur que tu puisses l'avoir en français avec date ou DateTime.
En tout cas tu peux lire dans la doc sur la fonction date :
Pour formater des dates dans d'autres langues, utilisez les fonctions setlocale() et strftime() au lieu de la fonction date().
Bon courage avec la locale. ^^

Si tu veux pas te prendre la tête, tu peux aussi simplement déclarer un tableau contenant les mois et l'utiliser en conjonction avec le numéro de mois :
$monthes = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', /* etc */);
echo $monthes[$date->format('n')];

Références :
https://www.php.net/manual/fr/function.date.php
https://www.php.net/manual/fr/datetime.format.php
https://www.php.net/manual/fr/function.setlocale.php
https://www.php.net/manual/fr/function.strftime.php

Mammouth du PHP | 613 Messages

16 mai 2019, 11:20

Ok merci.
Finalement j'ai fait ça :

Code : Tout sélectionner

setlocale(LC_TIME, 'french'); $date = $result['dateacti']; $jour = strftime('%d', strtotime($date)); $mois = strftime('%B', strtotime($date)); $mois = substr($mois, 0, 4); $annee = strftime('%Y', strtotime($date));
Sa focntionne bien mas j'ai un soucis sur le mois avec des accents....

Mammouth du PHP | 652 Messages

16 mai 2019, 11:27

Ah ben je vois que tu avais trouvé par toi même finalement. ;)

Pour l'accent c'est très probablement lié au charset qui ne doit pas être le même entre le charset d'affichage de ta page et le charset de php.

De mon expérience je dirais que le mieux est d'utiliser le charset utf8. Mettre default_charset = "utf-8" dans le php.ini, mettre <meta charset="UTF-8" /> dans le head html, enregistrer tes fichiers php en utf-8 et avoir une base de données en utf-8. Ainsi tu évites tous les problèmes d'accent sans avoir à faire des traitements spécifiques.
Ca peut aussi très bien fonctionner avec un autre charset, mais je dirais que l'utf-8 est le plus "ouvert".

Mais sans ça tu peux toujours te tourner vers des fonctions de conversion d'encodage telles que mb_convert_encoding ou iconv.
https://www.php.net/manual/fr/function. ... coding.php
https://www.php.net/manual/fr/function.iconv.php

Ou vers des fonctions comme htmlspecialchars ou htmlentities mais qui peuvent poser problème si le charset de la chaine injectée ne correspond pas au charset interne de php.
https://www.php.net/manual/fr/function. ... lchars.php
https://www.php.net/manual/fr/function.htmlentities.php