Convertire une liste de date

Résolu
Bonjour,
j'ai extrait une liste de date a partir d'un fichier XML
la date a l'origine est de format 07-10-19 et je dois la transformer en 19/10 ou 19/10/2007
j'ai deja fais le remplacement des - par / (Merci a Lazabelle pour son aide)

le code du traitement de la liste est actuellement celui la :

$contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");

$format_date=preg_replace("/-/","/",$contenu);

$motif='`(../../..)+`';

preg_match_all($motif,$format_date,$date_in);

$res=count($date_in[0]);

echo '"';
for ($i=0; $i<$res; $i++) {

if ($i<($res-1)) {
echo $date_in[0][$i].', ';
}

else echo $date_in[0][$i].'"';

}
?>

Comment changer de format?
merci
Configuration: Windows XP
Firefox 2.0.0.7

11 réponses

  • Votes
  • Date
  • Date décroissante
  1. Bonjour,

    peut être une solution plus simple:

    // si $contenu="07-01-07"; // annee, mois, jour
    
    $array_date=explode("-",$contenu);
    $date_fr=$array_date[2]."/".$array_date[1]."/20".$array_date[0];
    
    


    @lain
    1. en fait au départ j'ai un fichier XML
      avec au milieu des dates au mauvais format ... donc ta solution ne fonctionne pas
      a la base j'ai

      <date_in>07-10-06</date_in>
      <type_id>1</type_id>
      <nights>1</nights>
      </item>
      −
      <item>
      <date_in>07-10-07</date_in>
      <type_id>1</type_id>
      <nights>1</nights>
      ....
      ...
      et au final je dois arriver a trouver une liste de style 06/10, 07/10 ou 06/10/2007, 07/10/2007

      Merci d'avance
      1. Salut,

        Sais tu extraire la valeur du noeud XML ?

        <date_in>07-10-06</date_in>

        si tu rentre cette valeur dans une variable $contenu, ma solution doit marcher.

        @lain
        1. Salut,
          voici le code complet mais ca ne fonctionne pas :
          <?php

          //récupération du contenu du fichier xml.
          $contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");

          //récupère le contenu des balises date_in sous forme d'un tableau
          $motif='`(..-..-..)+`';
          preg_match_all($motif,$contenu,$date_in);

          // si $contenu="07-01-07"; // annee, mois, jour

          $array_date=explode("-",$date_in);
          $date_fr=$array_date[2]."/".$array_date[1]."/20".$array_date[0];

          //compte le nbre de résultats...
          $res=count($date_fr[0]);

          //commence l'affichage
          echo '"';

          //fais une boucle
          for ($i=0; $i<$res; $i++) {

          //condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule
          if ($i<($res-1)) {
          echo $date_fr[0][$i].', ';
          }

          else echo $date_fr[0][$i].'"';

          }
          ?>
          As tu une idée de ce que je peux faire?
          merci
          1. Salut,

            es tu sur que preg_match_all($motif,$contenu,$date_in); te retourne le bon résultat ?

            pour vérifier, juste après tu mets:

            echo "<pre>";
            print_r($date_in);
            echo "</pre>";
            


            si ça te retourne bien un array avec tes dates au format 07-10-06

            pour continuer il faut que tu le parcours cet array et traitre les valeurs une à une par la solution que je t'ai donnée

            foreach($date_in as $cle=>$value){
            $array_date=explode("-",$value);
            $date_fr[]=$array_date[2]."/".$array_date[1]."/20".$array_date[0]; 
            }
            
            //affichage
            echo "<pre>";
            print_r($date_fr);
            echo "</pre>";
            


            Si $date_in est un array à deux dimensions, tiens en compte dans ton (foreach($date_in[]

            @lain
            1. Merci pour ces explications mais je suis trop novice en programmattion pour modifier tes instructions ..
              Je sais que je ne peux pas demander un code tout fait mais la je sèche
              1. salut,

                essayes de mettre seulement ce code:

                <?php
                
                //récupération du contenu du fichier xml.
                $contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");
                
                //récupère le contenu des balises date_in sous forme d'un tableau
                $motif='`(..-..-..)+`';
                preg_match_all($motif,$contenu,$date_in); 
                
                echo "<pre>";
                print_r($date_in);
                echo "</pre>";
                ?>
                

                et donnes moi une copie du résultat
                1. ok merci
                  c'est ce que j'avais tout a l'heure
                  Array
                  (
                  [0] => Array
                  (
                  [0] => 07-10-01
                  [1] => 07-10-02
                  [2] => 07-10-03
                  [3] => 07-10-04
                  [4] => 07-10-05
                  [5] => 07-10-06
                  [6] => 07-10-07
                  [7] => 07-10-08
                  [8] => 07-10-09
                  [9] => 07-10-10
                  [10] => 07-10-11
                  [11] => 07-10-12
                  [12] => 07-10-13
                  [13] => 07-10-14
                  [14] => 07-10-15
                  [15] => 07-10-16
                  [16] => 07-10-17
                  [17] => 07-10-18
                  [18] => 07-10-19
                  [19] => 07-10-20
                  [20] => 07-10-21
                  [21] => 07-10-22
                  [22] => 07-10-23
                  [23] => 07-10-24
                  [24] => 07-10-25
                  [25] => 07-10-26
                  [26] => 07-10-27
                  [27] => 07-10-28
                  [28] => 07-11-01
                  [29] => 07-11-02
                  [30] => 07-11-03
                  [31] => 07-11-09
                  [32] => 07-11-10
                  [33] => 07-11-11
                  [34] => 07-11-12
                  [35] => 07-11-13
                  [36] => 07-11-14
                  [37] => 07-11-15
                  [38] => 07-11-16
                  [39] => 07-11-17
                  [40] => 07-11-18
                  [41] => 07-11-22
                  [42] => 07-11-23
                  [43] => 07-11-24
                  [44] => 07-12-05
                  [45] => 07-12-06
                  [46] => 07-12-12
                  [47] => 07-12-13
                  [48] => 07-12-14
                  [49] => 07-12-22
                  [50] => 07-12-23
                  [51] => 07-12-24
                  [52] => 07-12-25
                  [53] => 07-12-26
                  [54] => 07-12-29
                  [55] => 07-12-30
                  [56] => 07-12-31
                  [57] => 08-01-01
                  [58] => 08-01-02
                  [59] => 08-01-03
                  [60] => 08-01-04
                  [61] => 08-01-31
                  [62] => 08-02-01
                  [63] => 08-02-02
                  [64] => 08-03-18
                  [65] => 08-03-19
                  [66] => 08-05-21
                  [67] => 08-05-22
                  [68] => 08-05-23
                  [69] => 08-05-24
                  [70] => 08-05-25
                  [71] => 08-05-26
                  [72] => 08-05-27
                  [73] => 08-05-28
                  [74] => 08-05-29
                  [75] => 08-05-30
                  )

                  [1] => Array
                  (
                  [0] => 07-10-01
                  [1] => 07-10-02
                  [2] => 07-10-03
                  [3] => 07-10-04
                  [4] => 07-10-05
                  [5] => 07-10-06
                  [6] => 07-10-07
                  [7] => 07-10-08
                  [8] => 07-10-09
                  [9] => 07-10-10
                  [10] => 07-10-11
                  [11] => 07-10-12
                  [12] => 07-10-13
                  [13] => 07-10-14
                  [14] => 07-10-15
                  [15] => 07-10-16
                  [16] => 07-10-17
                  [17] => 07-10-18
                  [18] => 07-10-19
                  [19] => 07-10-20
                  [20] => 07-10-21
                  [21] => 07-10-22
                  [22] => 07-10-23
                  [23] => 07-10-24
                  [24] => 07-10-25
                  [25] => 07-10-26
                  [26] => 07-10-27
                  [27] => 07-10-28
                  [28] => 07-11-01
                  [29] => 07-11-02
                  [30] => 07-11-03
                  [31] => 07-11-09
                  [32] => 07-11-10
                  [33] => 07-11-11
                  [34] => 07-11-12
                  [35] => 07-11-13
                  [36] => 07-11-14
                  [37] => 07-11-15
                  [38] => 07-11-16
                  [39] => 07-11-17
                  [40] => 07-11-18
                  [41] => 07-11-22
                  [42] => 07-11-23
                  [43] => 07-11-24
                  [44] => 07-12-05
                  [45] => 07-12-06
                  [46] => 07-12-12
                  [47] => 07-12-13
                  [48] => 07-12-14
                  [49] => 07-12-22
                  [50] => 07-12-23
                  [51] => 07-12-24
                  [52] => 07-12-25
                  [53] => 07-12-26
                  [54] => 07-12-29
                  [55] => 07-12-30
                  [56] => 07-12-31
                  [57] => 08-01-01
                  [58] => 08-01-02
                  [59] => 08-01-03
                  [60] => 08-01-04
                  [61] => 08-01-31
                  [62] => 08-02-01
                  [63] => 08-02-02
                  [64] => 08-03-18
                  [65] => 08-03-19
                  [66] => 08-05-21
                  [67] => 08-05-22
                  [68] => 08-05-23
                  [69] => 08-05-24
                  [70] => 08-05-25
                  [71] => 08-05-26
                  [72] => 08-05-27
                  [73] => 08-05-28
                  [74] => 08-05-29
                  [75] => 08-05-30
                  )

                  )
                  1. Salut,

                    Alors voici la synthèse:
                    (chez moi ça marche)
                    <?php
                    //récupération du contenu du fichier xml.
                    $contenu=file_get_contents("http://www.therentalcalendar.com/jac/show/xml/237759");
                    
                    //récupère le contenu des balises date_in sous forme d'un tableau
                    $motif='`(..-..-..)+`';
                    preg_match_all($motif,$contenu,$date_in); 
                    /*
                    echo "Sortie preg_match <br><pre>";
                    print_r($date_in);
                    echo "</pre>";
                    */
                    foreach($date_in[0] as $cle=>$value){
                    $array_date=explode("-",$value);
                    $date_fr[0][]=$array_date[2]."/".$array_date[1]."/20".$array_date[0]; 
                    }
                    
                    //compte le nbre de résultats...
                    $res=count($date_fr[0]);
                    
                    //commence l'affichage
                    echo '"';
                    
                    //fait une boucle
                    for ($i=0; $i<$res; $i++) {
                    	//condition pour que le dernier membre de la boucle ne soit pas suivi d'une virgule
                    	if ($i<($res-1)) {
                    		echo $date_fr[0][$i].', ';
                    	}else {
                    		echo $date_fr[0][$i].'"';
                    	}
                    } 
                    
                    ?>
                    
                    1. Un grand merci pour cette aide précieuse. Ca fonctionne tres bien
                      Olivier