Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 07-06-2012 10:23:15

CDuv
Nouveau membre
Date d'inscription: 04-05-2011
Messages: 6

[Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

Bonjour,

J'aimerais afficher des dates sous la forme jj/mm/aaaa (ex. 07/06/2012) mais sans forcer un format particulier (genre 'dd/MM/yyyy') qui me ferait perdre la localisation (mes visiteurs anglais auraient aussi la date 07/06/2012, ce qui les perturberaient).

Ce qui existe de plus proche est le format fourni par la constante Zend_Date::DATE_SHORT mais d'après les fichiers LDML/XML de Zend_Locale_Data, l'année est retournée sous 2 chiffres... (exemple avec le fr.xml)

Code:

[lang=xml]
                    <dateFormatLength type="short">
                        <dateFormat>
                            <pattern>dd/MM/yyyy</pattern>
                        </dateFormat>
                    </dateFormatLength>

Il n'existe apparemment pas de moyen de surcharger/fournir un fichier LDML modifié à Zend et je voudrais éviter de devoir modifier les LDML du framework...

Dernière modification par CDuv (30-11-2013 00:15:50)

Hors ligne

 

#2 25-11-2013 10:41:43

yassineKbida
Nouveau membre
Date d'inscription: 25-11-2013
Messages: 3

Re: [Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

Bonjour CDuv,

je me retrouve dans la méme situation,

est se que vous avez trouvé une solution à ce probléme?

moi j'envisage de créer ma propre constante Date qui fait le méme effet que DATE_SHORT mais avec 4 chiffres pr l'année et la mettre ds website/models/projects/Date.php

en récupérant la local de zend et en retournant le format correspondant

mais pr l'instant c pas encore gagné

si vous avez trouvé une solution depuis 2012 je suis preneuse

merci d'avance.

Hors ligne

 

#3 25-11-2013 11:14:32

CDuv
Nouveau membre
Date d'inscription: 04-05-2011
Messages: 6

Re: [Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

En effet, j'ai finalement utilisé une constante maison créée comme suit :

Code:

[lang=php]
/** Test and correct Zend_Date::DATE_SHORT format **/
$localeDataDateFormats = Zend_Locale_Data::getList(Zend_Locale::findLocale(), 'date'); // Date formats for auto Locale (@see Zend_Locale::findLocale())
$longYearFormat = $localeDataDateFormats['short'];
if (substr_count($longYearFormat, 'yy') < 2) { // Not enough "yy"
    $longYearFormat = str_replace('yy', 'yyyy', $longYearFormat); //TODO: Improve so that it also works with only one or three "y"
}
define('DATE_SHORT_LONGYEAR', $longYearFormat); // Define our new format, should now use it instead of Zend_Date::DATE_SHORT
/** /Test and correct Zend_Date::DATE_SHORT format **/

Et j'utilise désormais la constante DATE_SHORT_LONGYEAR dans mes Zend_Date.

Dernière modification par CDuv (25-11-2013 11:14:48)

Hors ligne

 

#4 25-11-2013 12:43:51

yassineKbida
Nouveau membre
Date d'inscription: 25-11-2013
Messages: 3

Re: [Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

Merci bcp pr ton retour CDuv,

j'ai quandméme quelques questions par rapport à votre solution

voilà j'ai essayer de mettre votre code ds mon propre fichier website/models/projects/Date.php comme ceci:

<?php //

class Project_Date
{
    public function __construct()
    {
        $loaleDataDateFormats = Zend_Locale_Data::getList(Zend_Locale::findLocale(), 'date');
        $longYearFormat = $localeDataDateFormats['short'];     
        if (substr_count($longYearFormat, 'yy') < 2) {           
            $longYearFormat = str_replace('yy', 'yyyy', $longYearFormat);
        }     
        define('DATE_SHORT_LONGYEAR', $longYearFormat);
    }
}

Et je l'appelle depuis ma vue comme ceci:

    <?php

       $date = Zend_Date::now();     
        $langue = 'en';
        echo $date->toString(Project_Date::DATE_SHORT_LONGYEAR, $langue).'<br>';
        $langue = 'fr';
        echo $date->toString(Project_Date::DATE_SHORT_LONGYEAR, $langue).'<br>';
        $langue = 'es';
        echo $date->toString(Project_Date::DATE_SHORT_LONGYEAR, $langue).'<br>';
        $langue = 'sv';
        echo $date->toString(Project_Date::DATE_SHORT_LONGYEAR, $langue).'<br>';

mais ça me donne l'erreur suivante  Undefined class constant 'DATE_SHORT_LONGYEAR'

est se que ça vous di quelque chose cette erreur ou pas du tout ?
Merci .

Hors ligne

 

#5 25-11-2013 23:48:39

CDuv
Nouveau membre
Date d'inscription: 04-05-2011
Messages: 6

Re: [Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

En effet ma solution ne modifie pas de Zend_Date : j'utilise une constante globale (c'est ce que fait define()).

Remplacez vos paramètres de format Project_Date::DATE_SHORT_LONGYEAR par DATE_SHORT_LONGYEAR ainsi :

Code:

[lang=php]
echo $date->toString(DATE_SHORT_LONGYEAR, $langue).'<br>';

Hors ligne

 

#6 29-11-2013 16:14:40

yassineKbida
Nouveau membre
Date d'inscription: 25-11-2013
Messages: 3

Re: [Résolu]Zend_Date::DATE_SHORT avec année sur 4 chiffres MAIS localisée

Je vous remercie pr votre réponse CDuv

mon problème est résolu.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages