Convertire une liste de date

Résolu
zeitoun69 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -  
zeitoun69 Messages postés 57 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

11 réponses

Alain42
 
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   Statut Membre Dernière intervention   5
 
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
Alain42
 
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   Statut Membre Dernière intervention   5
 
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
Alain42
 
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   Statut Membre Dernière intervention   5
 
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
Alain42
 
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   Statut Membre Dernière intervention   5
 
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   Statut Membre Dernière intervention   5
 
que me proposes tu ensuite?
merci
0
Alain42
 
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   Statut Membre Dernière intervention   5
 
Un grand merci pour cette aide précieuse. Ca fonctionne tres bien
Olivier
0