IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Format date en Français


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut Format date en Français
    Bonjour,

    J'ai cette partie du code pour la date ... comment la transformer pour que l'affichage se fasse en Français.
    Merci.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    //date format
    if (!function_exists('helper_date_format')) {
        function helper_date_format($datetime)
        {
            $date = date("d/m/Y", strtotime($datetime));
            $date = str_replace("Jan", trans("January"), $date);
            $date = str_replace("Feb", trans("February"), $date);
            $date = str_replace("Mar", trans("March"), $date);
            $date = str_replace("Apr", trans("April"), $date);
            $date = str_replace("May", trans("May"), $date);
            $date = str_replace("Jun", trans("June"), $date);
            $date = str_replace("Jul", trans("July"), $date);
            $date = str_replace("Aug", trans("August"), $date);
            $date = str_replace("Sep", trans("September"), $date);
            $date = str_replace("Oct", trans("October"), $date);
            $date = str_replace("Nov", trans("November"), $date);
            $date = str_replace("Dec", trans("December"), $date);
            return $date;
     
        }

  2. #2
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    salut,

    il faut utiliser la bibliothèque d'internationalisation ICU pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $fmt = new IntlDateFormatter('fr_FR', IntlDateFormatter::NONE, IntlDateFormatter::NONE);
    $fmt->setPattern('EEEE dd MMMM YYYY');
    echo $fmt->format(new DateTime());   // jeudi 20 février 2020
    Tiens un peu de lecture par ici

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Février 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Février 2020
    Messages : 2
    Par défaut
    Salut,

    Mais je mets ça où ?
    avant, après ?

    Merci pour ton aide

  4. #4
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Bonjour, j'ajoute qu'on peut aussi utiliser setlocale() (documentation) et strftime() (documentation).

    Si c'est juste pour les dates qu'il s'agit d'afficher en français, c'est suffisant.
    Mais pour une application multilingue, la solution de @rawsrc est bien meilleure.
    Attention à bien lire la doc aussi, pour le comportement de setlocale() dans un environnement multi-thread, notamment.

  5. #5
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2009
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 22
    Par défaut Avec setlocale, cela ne fonctionne pas
    Bonjour,

    Citation Envoyé par Trehinos Voir le message
    Bonjour, j'ajoute qu'on peut aussi utiliser setlocale() (documentation) et strftime() (documentation).

    Si c'est juste pour les dates qu'il s'agit d'afficher en français, c'est suffisant.
    Mais pour une application multilingue, la solution de @rawsrc est bien meilleure.
    Attention à bien lire la doc aussi, pour le comportement de setlocale() dans un environnement multi-thread, notamment.
    J'utilise setlocale en vain :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    <?php
      date_default_timezone_set('Europe/Paris') ;
      setlocale(LC_ALL, ['fr', 'fra', 'fr_FR', 'fr_FR@euro']) ;
    function dateSql2fr ($dateSql)
    {
    	$time = strtotime($dateSql) ;
    	return strftime("%A %B %Y", $time) ;
    }
    ?>
    <html>
    	<head> </head>
       <body>
            <h1>Tests</h1>
    <h2>      
    <?php
    echo  "<br /> Date : " . dateSql2fr ("2020-03-07 14:13:30") ;
    ?>
    </h2>
    <h1>
    <a href="preTest.html" > retour </a>
    </h1>
    </body>
    </html>
    et s'affiche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Tests
    Date : Saturday March 2020
    retour
    Je précise que les php.ini de /etc/apache2 et cli sont bien à Europe/Paris comme me le dit php_info ().

    Why ?

  6. #6
    Membre expérimenté Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Par défaut
    Vous avez essayé la solution de rawsrc ?

    Sinon, que vous renvoie l'appel à la fonction setlocale(LC_ALL, '0'); (renvoie la locale courante) ?

    Je cite la documentation :
    Retourne la nouvelle configuration locale, ou FALSE si la localisation n'est pas implémentée sur votre plate-forme, si la variable de localisation n'existe pas, ou si la catégorie spécifiée n'est pas valide.
    Avez-vous testé le retour de l'appel setlocale(LC_ALL, ['fr', 'fra', 'fr_FR', 'fr_FR@euro']) ; peut être qu'il échoue ?

  7. #7
    Expert confirmé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 420
    Par défaut
    Comme déjà dit, rawsrc a donné la solution qui permet de s'affranchir de l'utilisation de setLocale, donc autant utiliser cette solution.

    Si tu utilises un objet dateTime cela donne donc :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function objet_date_format($datetime)
    {
    	$fmt = new IntlDateFormatter('fr_FR', IntlDateFormatter::NONE, IntlDateFormatter::NONE);
    	$fmt->setPattern('EEEE dd MMMM YYYY');
    	return $fmt->format($datetime);
    }
    $date = new DateTime();
    echo objet_date_format($date);

    Si tu utilises une chaine de caractère (résultat d'une requête mysql par exemple) on peut faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function string_date_format($datetime)
    {
    	$cal = IntlCalendar::fromDateTime("$datetime Europe/Paris");
    	return IntlDateFormatter::formatObject($cal, "EEEE dd MMMM YYYY", "fr_FR");
    }
    $date = '2020-03-10 18:34:22.759964';
    echo string_date_format($date);
    Ces deux fonctions retourne aujourd'hui : "mardi 10 mars 2020"

Discussions similaires

  1. Mettre format date en français
    Par js8bleu dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 29/04/2012, 14h03
  2. Format date (anglais / français)
    Par delavega dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 04/01/2012, 15h39
  3. [phpMyAdmin] Format DATE en français par défaut
    Par fchevali dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 07/05/2008, 10h52
  4. Pb format date anglais/Français
    Par VBBBA dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/07/2007, 22h46
  5. Format Date Anglais/Français
    Par macben dans le forum Oracle
    Réponses: 4
    Dernier message: 22/08/2005, 11h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo