Convertire une liste de date

Résolu/Fermé
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 - 20 oct. 2007 à 04:12
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 - 26 oct. 2007 à 18:44
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

11 réponses

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
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
20 oct. 2007 à 23:26
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
0
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
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
25 oct. 2007 à 12:58
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
25 oct. 2007 à 22:17
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
0
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
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
25 oct. 2007 à 23:29
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
)

)
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
26 oct. 2007 à 00:32
que me proposes tu ensuite?
merci
0
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].'"';
	}
} 

?>
0
zeitoun69 Messages postés 57 Date d'inscription vendredi 20 juillet 2007 Statut Membre Dernière intervention 27 juin 2013 5
26 oct. 2007 à 18:44
Un grand merci pour cette aide précieuse. Ca fonctionne tres bien
Olivier
0