Quick links: Content - sections - sub sections
EN FR
Quick Search Advanced search
 
Page

  [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

Reply #1 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

Reply #2 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

Reply #3 Posted by Julien on 12/24/2008 13:08

Hello,

juste pour dire qu'il existe déjà une partie de locales ici.


Julien

  [Opened] Re: modificateur jdatetime

Reply #4 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

Reply #5 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

Reply #6 Posted by laurentj on 12/28/2008 11:57

Salut

m@noo: ouvre un ticket et propose ton patch :-)

  [Opened] Re: modificateur jdatetime

Reply #7 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.

http://developer.jelix.org/ticket/796


Manu

  [Opened] Re: modificateur jdatetime

Reply #8 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

Reply #9 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...

 
Page
  1. Re: modificateur jdatetime