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 :

Fonction convertir une date [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut Fonction convertir une date
    Bonjour,

    Je chercher à afficher différemment les dates.
    Aujourd'hui, elle s'affiche comme ceci :
    du jj/mm au jj/mm/aaaa.
    Je souhaiterai les convertir pour qu'elle s'affiche comme ça :
    Du mardi 22 novembre au mercredi 22 novembre 2011.
    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
    if($date_ouv_en_clair!=''){
        echo $date_ouv_en_clair;
    }else if($ouverture_ot=='0000-00-00¤0000-00-00'){
        echo $texte[11][$id_lang];
    }else{
        $anneedeb=substr($ouverture_ot,0,4);
        $moisdeb=substr($ouverture_ot,5,2);
        $jourdeb=substr($ouverture_ot,8,2);
        $anneefin=substr($ouverture_ot,11,4);
        $moisfin=substr($ouverture_ot,16,2);
        $jourfin=substr($ouverture_ot,19,2);
        echo 'Du '.$jourdeb.'/'.$moisdeb.'/'.$anneedeb.' au ';
        echo $jourfin.'/'.$moisfin.'/'.$anneefin.'<br />';
     
    }
    Merci d'avance pour votre aide

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    elles sortent d’où les dates à la base ?

  3. #3
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    tu peux faire ça mais bon ... c'est vraiment s’embête pour une broutille

    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
    $str = 'du 01/10 au 30/10/2011';
    $format = 'du %s au %s';
     
    sscanf($str, $format, $date1, $date2);
     
    $date2 = DateTime::createFromFormat('d/m/Y', $date2);
    $date1 = DateTime::createFromFormat('d/m/Y', $date1.'/'.$date2->format('Y'));
     
    $fmt = new IntlDateFormatter('fr', IntlDateFormatter::FULL, IntlDateFormatter::NONE);
     
    $fmt->setPattern('EEEE d MMMM');
    $date1 = $fmt->format($date1);
     
    $fmt->setPattern('EEEE d MMMM YYYY');
    $date2 = $fmt->format($date2);
     
    echo sprintf($format, $date1, $date2);
    // du samedi 1 octobre au dimanche 30 octobre 2011

  4. #4
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    Elle sont extraites d'une base de donnée.
    En fait, je recompose la date à partir d'une chaine de caractère.

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Pierrea4564 Voir le message
    Elle sont extraites d'une base de donnée.
    En fait, je recompose la date à partir d'une chaine de caractère.
    d'une chaine ou de la base ?

  6. #6
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    Plutôt issus d'unechaine (en espérant que je dis pas de betise).
    en gros, voila ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date1=$jourdeb.'/'.$moisdeb.'/'.$anneedeb;
    $date2 =$jourfin.'/'.$moisfin.'/'.$anneefin;
    Donc à partir de là, je voudrais que mon php interprete ces 2 variables comme étant 2 dates, et qu'il me les remette sous la forme mardi 22 octobre 2011.

    J'ai essayé ton code mais j'ai une erreur au niveau de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $date2 = DateTime::createFromFormat('d/m/Y', $date2);
    Fatal error: Call to undefined method DateTime::createFromFormat() in /home/...

  7. #7
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Pierrea4564 Voir le message
    Plutôt issus d'unechaine (en espérant que je dis pas de betise).
    en gros, voila ce que j'ai :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $date1=$jourdeb.'/'.$moisdeb.'/'.$anneedeb;
    $date2 =$jourfin.'/'.$moisfin.'/'.$anneefin;
    Donc à partir de là, je voudrais que mon php interprete ces 2 variables comme étant 2 dates, et qu'il me les remette sous la forme mardi 22 octobre 2011.
    c'est après ton traitement ça

    Citation Envoyé par Pierrea4564 Voir le message
    J'ai essayé ton code mais j'ai une erreur au niveau de cette ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $date2 = DateTime::createFromFormat('d/m/Y', $date2);
    Fatal error: Call to undefined method DateTime::createFromFormat() in /home/...
    c'est parce que t'as une vielle version de php (pas vu que t'était en 5.2)
    va falloir

    avant de bidoullier pour rien et pour être sur, de ta base tu sors ton texte brute avec juste : du 01/10 au 30/10/2011 ?

  8. #8
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    Je pensais pas que la provenance de mon texte avait autant d'importance.
    Alors, je reprends tout depuis le début

    J'ai une base de donnée. Il y a une table 't_ot'

    dedans, il y a un champs 'date_deb' (type=date) et date_fin (type=fin)
    A l'intérieur de ce champs, le format de f-date est comme ça : 2011-03-15.

    A partir de là, qu'est ce que tu me conseilles?

    Je souhaite afficher : Du 'date_deb' (format mercredi 23 novembre) au 'date_fin (format mercredi 30 novembre 2011)'

    J'avais concatainer les deux dates dans une seule variable $ouverture_ot, mais en fait je me dis que ça sert à rien, il faut que je reprenne tout.

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    en effet c'est mieux, pourquoi s’embêter a paser une chaine et convertir les date sachant tu les a déjà dans ta base avec le bon format ?

    fait juste

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    // $result['date_deb'] = '2011-03-1';
    // $result['date_fin'] = '2011-03-15';
     
    setlocale(LC_TIME, 'fr_FR', 'fra');
     
    $date_deb = strftime('%A %d %B', strtotime($result['date_deb']));
    $date_fin = strftime('%A %d %B %Y', strtotime($result['date_fin']));
     
    echo sprintf('Du %s au %s', $date_deb, $date_fin);
     
    // Du mardi 01 mars au mardi 15 mars 2011

  10. #10
    Membre averti
    Inscrit en
    Novembre 2009
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 47
    Par défaut
    c'est parfait, merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 29/06/2005, 11h22
  2. Convertir une date lunaire
    Par djeckelle dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/12/2004, 15h06
  3. []Comment convertir une date GMT en date vb ?
    Par Invité dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 11/08/2004, 17h01
  4. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 12h28
  5. Convertir une date en type string
    Par ziboux dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 29/10/2003, 11h52

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