[RESOLU] Comment afficher le jour de la semaine en Français : Lundi, Mardi,..

Eléphanteau du PHP | 13 Messages

09 nov. 2021, 10:52

Bonjour,

Je suis peu compétent en php.

Dans un fichier php, se trouve le code suivant :

Code : Tout sélectionner

$order_date_text = Tools::displayDate(date('D-d-m-Y'),null , 1); '{date}' => $order_date_text,
Ce code permet d'afficher la date sous la forme ci-dessous :
Tue-09-11-2021

Comment pourrais je afficher la forme ci-dessous :
Mardi 09-11-2021

Je vous remercie par avance pour toute aide.

Cordialement,

Patrick

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

09 nov. 2021, 12:32

Bonjour,

Recherche où est défini la fonction Tools::displayDate() et regarde les paramètres attendus, avec un peu de chance tu pourras y définir la langue ;-)
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 13 Messages

10 nov. 2021, 11:14

Bonjour,

Dans le fichier php concerné, ne figure aucune autre ligne avec Tools::displayDate ou avec Tools::displayDate.

Est-il possible, avec la fonction str_replace de remplacer Tue- par Mardi ?
Si oui, comment faudrait-il procéder ?

Merci par avance pour toute réponse.

Patrick

Eléphant du PHP | 337 Messages

10 nov. 2021, 12:39

Ce n'est peut-être pas très optimisé ni académique, mais pour ça je fais un truc dans ce genre là :

Code : Tout sélectionner

$jours = array(1 => "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"); // date('N') donne le jour de la semaine de 1 à 7 commençant par le lundi $date = $jours[intval(date('N'))]." ".date('d-m-Y');

Eléphanteau du PHP | 13 Messages

10 nov. 2021, 13:18

Merci finipe pour la suggestion.

Dans mon fichier php se trouve :

Code : Tout sélectionner

$order_date_text = Tools::displayDate(date('D-d-m-Y'),null , 1); '{date}' => $order_date_text,
Pourriez vous m'indiquer par quel code je dois remplacer ces deux lignes.

Désolé pour mon incompétence !

Merci par avance

Patrick

ynx
Mammouth du PHP | 586 Messages

10 nov. 2021, 13:55

Bonjour,

A priori la classe Tools provient de Prestashop, mais on ne sait pas quelle version de Prestashop est utilisée.
https://github.com/PrestaShop/PrestaSho ... s.php#L974

Comme supposé dans la première réponse, le deuxième paramètre de la fonction displayDate() permet justement de définir l'identifiant de la langue, néanmoins je ne sais pas quel identifiant correspond à chaque langue dans Prestashop.
Ce paramètre est déprécié dans la dernière version, par défaut il semble que c'est la langue du shop qui devrait être automatiquement utilisée. Est-ce que la langue est bien définie en Français dans la configuration du shop ?

Eléphanteau du PHP | 13 Messages

10 nov. 2021, 16:18

Bonjour,

Merci encore pour cette réponse rapide.

J'utilise la version de Prestashop 1.5.6.2.

La langue est bien définie dans l'admin :
Localisation > Langues
Français est l'id numéro 2 (Anglais est id numéro 1, mais seul le Français est activé)
Le fichier dans lequel je souhaiterais afficher la date en Français avec le jour de la semaine est :modules\mailalerts\mailalerts.php

A l'origine dans ce fichier figurait :

Code : Tout sélectionner

$order_date_text = Tools::displayDate($order->date_add);
Ainsi, dans le mail de confirmation de commande reçu par le marchand la date était affichée comme suit :
09/11/2021

J'ai remplacé le code ci-dessus par le code suivant :

Code : Tout sélectionner

$order_date_text = Tools::displayDate(date('D-d-m-Y'),null , 1);
Ainsi, dans le mail de confirmation de commande reçu par le marchand la date est maintenant affichée comme suit :
Tue-09-11-2021

Je préfèrerais qu'elle soit affichée en Français, c'est à dire :
Mardi 09-11-2021 (ou Mardi 09/11/2021)

Merci à nouveau par avance pour toute aide.

Patrick

Avatar du membre
Mammouth du PHP | 1564 Messages

12 nov. 2021, 18:22

Remplace

Code : Tout sélectionner

$order_date_text = Tools::displayDate(date('D-d-m-Y'),null , 1);
par

Code : Tout sélectionner

$VariableAjoutee_jours = array(1 => "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"); // date('N') donne le jour de la semaine de 1 à 7 commençant par le lundi $VariableAjoutee_date = $VariableAjoutee_jours[intval(date('N'))]." ".date('d-m-Y'); $order_date_text = Tools::displayDate($VariableAjoutee_date,null , 1);
Merci finipe au passage pour l'astuce de mettre l'id de départ, je les mettais à tous ;)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

13 nov. 2021, 23:54

Comme supposé dans la première réponse, le deuxième paramètre de la fonction displayDate() permet justement de définir l'identifiant de la langue
Français est l'id numéro 2 (Anglais est id numéro 1, mais seul le Français est activé)
Moi j'aurai tenté de remplacer ton null par 2 du coup.


Mais sinon le + simple (sans relire tout le code de Prestashop) c'est effectivement de faire un remplacement.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphanteau du PHP | 13 Messages

19 nov. 2021, 19:01

Merci pour toutes vos réponses.

Je vais effectivement fait un remplacement, du type suivant :

Code : Tout sélectionner

$order_date_text = str_replace("Mon-", "Lundi-", $order_date_text);
Merci encore !

Patrick

Avatar du membre
Mammouth du PHP | 1564 Messages

20 nov. 2021, 02:02

Tu peux passer en résolu ;)