- 1
[Opened] modificateur jdatetime
Posted by manooweb on 12/23/2008 16:30
Salut
quelqu'un aurait-il déjà eu besoin d'afficher la date dans le format suivant :
jourEnLettre jourEnChiffre moisEnLettre annéeEnChiffre
jourEnLettre : complet en toute lettre et tenant compte de la locale
jourEnChiffre : sans le zéro pour les nombres < 10
moisEnLettre : complet en toute lettre et en tenant compte de la locale
annéeEnChiffre : sur 4 chiffres
Sinon une piste avant que je me lance dans un truc tordu ;-)))
Merci m@nu
Manu
[Opened] Re: modificateur jdatetime
Posted by manooweb on 12/23/2008 21:53
bon j'ai la piste avec la fonction strftime. http://www.php.net/manual/fr/function.strftime.php
Mais elle dépend de la configuration des locales sur la machine. Sur mon Ubuntu pas moyen même avec un sudo dkpg -reconfigure locales
j'ai bien fr_FR.UTF8 up-to-date mais la date reste en english chez mon hébergeur çà traduit mais je perds les accents (la fonction ne me renvoie pas de l'UTF-8) Sous windows (WAMP) çà traduit également en mettant setlocale('fra') mais pas d'UTF-8 nan plus.
c'est un peu chiant :-/
Manu
[Opened] Re: modificateur jdatetime
Posted by bballizlife on 12/24/2008 11:47
Peut-être que le plus simple serait un plugin jtpl (nouveau ou en améliorant ce qui existe) qui jouerait avec des fichiers de locales. Il suffit d'avoir les noms des 7 jours de la semaines et les 12 mois. Après bien sûr il faudrait livrer les locales en plusieurs langues, mais ça reste assez simple et surtout devient indépendant du système.
N'importe comment c'est dans la doc
[Opened] Re: modificateur jdatetime
[Opened] Re: modificateur jdatetime
Posted by manooweb on 12/24/2008 15:45
Oué merci les gars, je vais bricoler par là plutôt que dans mon module et une fois que j'ai fait quelque chose qui tient la route je vous le soumets.
Manu
[Opened] Re: modificateur jdatetime
Posted by manooweb on 12/26/2008 17:38
Voilà ce que j'ai fait
modification fichiers ajout dans lib/jelix/core-modules/jelix/locales/fr_FR/format.UTF-8.properties
# format pour la fonction sprintf pour le format de date FULL_LANG_FORMAT date_full = %1$s %2$d %3$s %4$d
ajout des jours de la semaine dans lib/jelix/core-modules/jelix/locales/fr_FR/date_time.UTF-8.properties
day.0.label = Dimanche day.0.shortlabel = Dim day.1.label = Lundi day.1.shortlabel = Lun day.2.label = Mardi day.2.shortlabel = Mar day.3.label = Mercredi day.3.shortlabel = Mer day.4.label = Jeudi day.4.shortlabel = Jeu day.5.label = Vendredi day.5.shortlabel = Ven day.6.label = Samedi day.6.shortlabel = Sam
modification lib/jelix/utils/jDateTime.class.php ajout de la constante FULL_LANG_DATE
const FULL_LANG_DATE=62;
modification de la méthode toString (ajout du cas pour FULL_LANG_DATE
case self::FULL_LANG_DATE: $t = mktime ( $this->hour, $this->minute,$this->second , $this->month, $this->day, $this->year ); // traduction du mois $month = jLocale::get('jelix~date_time.month.'.date('m',$t).'.label'); // traduction du jour $day = jLocale::get('jelix~date_time.day.'.date('w',$t).'.label'); // récupération du formatage de la date $lf = jLocale::get('jelix~format.date_full'); // on mets le tout dans le bon ordre à l'aide de la chaine de formatage $str = sprintf($lf, $day, $this->day, $month, $this->year); break;
modification du modificateur de template ajout de la correspondance vers la constante FULL_LANG_DATE lib/jelix/plugins/common/modifier.jdatetime.php
$formats = array( 'lang_date' => jDateTime::LANG_DFORMAT, 'lang_datetime' => jDateTime::LANG_DTFORMAT, 'lang_time' => jDateTime::LANG_TFORMAT, 'db_date' => jDateTime::DB_DFORMAT, 'db_datetime' => jDateTime::DB_DTFORMAT, 'db_time' => jDateTime::DB_TFORMAT, 'iso8601' => jDateTime::ISO8601_FORMAT, 'timestamp' => jDateTime::TIMESTAMP_FORMAT, 'rfc822'=> jDateTime::RFC822_FORMAT, 'full_lang_date'=> jDateTime::FULL_LANG_DATE );
Je n'ai pas modifié la méthode setFromString() cela n'a pas grand intérêt de parser dans ce sens là.
En exemple çà donne çà (bloc agenda) http://90plan.ovh.net/~treizese/accueil
Laurent n'était pas trop chaud pour faire la modif. Il y a du nouveau avec php 5.3. Donc dite le moi, que je l'intègre ailleurs dans mon code, mais faites au moins la modif des fichiers de locales pour les jours de la semaine. Merci. @+ m@nu
Manu
[Opened] Re: modificateur jdatetime
Posted by laurentj on 12/28/2008 11:57
Salut
m@noo: ouvre un ticket et propose ton patch :-)
[Opened] Re: modificateur jdatetime
Posted by manooweb on 12/28/2008 17:41
Fait, j'ai renvoyé vers ce sujet tout y est à part les propeties des charsets et des langues.
Manu
[Opened] Re: modificateur jdatetime
Posted by sylozof on 07/08/2009 13:09
Je fais remonter ce sujet car j'ai une question similaire.
En fait j'ai un template dans lequel j'utilise à un moment donné la variable de template $j_timenow
, qui m'affiche l'heure courante au format heures:minutes:secondes. Or, j'aimerais juste avoir les heures et les minutes (ex. 12:34 au lieu de 12:34:26).
Est-ce qu'il est possible de formater directement $j_timenow
comme je veux dans le template en utilisant un modificateur jdatetime
? Ou est-ce qu'il faut obligatoirement passer par la création d'un nouveau format dans les fichiers du core de Jelix ?
[Opened] Re: modificateur jdatetime
Posted by sylozof on 07/08/2009 14:19
Effectivement, il y a jtpl_modifier_common_date_format, tout bêtement.
Donc en fait, le modificateur jdatetime est un peu plus évolué que date_format, étant donné qu'il prend en compte les locales...
- 1