Conversion de date

Eléphant du PHP | 70 Messages

27 févr. 2009, 14:48

bonjour à tous,

Quelqu'un peut-il me dire ce qui cloche dans ma conversion de date ci-dessous sachant que dateicdt est une de mes variable et que la date quel contient est au format jj/mm/aaaa
$date_temp = mktime(0,0,0, $dateicdt("d"), $dateicdt("m"), $dateicdt("Y")); 
$date=strftime ('%Y-%m-%d', $date_temp); //Ici j' obtient une date du type "2009-02-25" 
ps: dsl mais ma coloration syntaxique ne fonctionne pas
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

Mammouth du PHP | 1353 Messages

27 févr. 2009, 14:52

Bonjour,
$date=strftime ('%Y-%m-%d', $date_temp);
%Y année
%m mois
%d jour

Qu'est ce qui ne marche pas ?

Si tu veux jj-mm-aaaa il faudrait surement faire :
$date=strftime ('%d-%m-%Y', $date_temp);
Sinon regarde du coté de setlocale() mais pour l'instant je pense que c'est logique d'avoir cette date...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 70 Messages

27 févr. 2009, 14:59

non ce que je veux c'est bel et bien aaaa/mm/jj

mais lorsque que je lance mon script, ma conversion la conversion de jj/mm/aaaa a aaaa/mm/jj que je veux ne ce fait pas
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:06

il me semble que mktime() c'est mois jour année dans les paramètres...
$date_temp = mktime(0,0,0, $dateicdt("m"), $dateicdt("d"), $dateicdt("Y")); 
change-t-il quelque chose ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 70 Messages

27 févr. 2009, 15:08

merci guilt92, mais ne peut -ton pas les inverser a notre guide?
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:10

mktime() retourne un timestamp UNIX correspondant aux arguments fournis. Ce timestamp est un entier long, contenant le nombre de secondes entre le début de l'époque UNIX (1er Janvier 1970 00:00:00 GMT) et le temps spécifié.

Les arguments peuvent être omis, de droite à gauche, et tous les arguments manquants sont utilisés avec la valeur courante de l'heure et du jour.
Mais tu précise tout il les prend dans ce sens la... Donc si tu inverse le int retourné sera pas le bon...
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 70 Messages

27 févr. 2009, 15:14

ok merci guilt92, j'ai donc corriger l'erreur

$date_temp = mktime(0,0,0, $dateicdt("m"), $dateicdt("d"), $dateicdt("Y"));
$date=strftime ('%Y-%m-%d', $date_temp); //Ici j' obtient une date du type "2009-02-25"


neénmoins une erreur subsite car mon script ne s'execute toujours pas
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:18

Et si tu fais :
$date_temp = mktime(0,0,0, $dateicdt("m"), $dateicdt("d"), $dateicdt("Y"));  
$date=date('Y-m-d', $date_temp);
echo $date;
ca change quelque chose ?
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 70 Messages

27 févr. 2009, 15:22

J'ai pas plus de reussite, il me renvoit toujours
Fatal error: Call to undefined function 05/02/2009() in c:\wamp\www\appli\recherche\recherchermanager.php on line 43
ligne 43 correspondant a
$date_temp = mktime(0,0,0, $dateicdt("m"), $dateicdt("d"), $dateicdt("Y")); 
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:27

Ok donc le probleme ne vient pas du tout de la conversion ;)

c'est quoi $dateicdt ? parce que tu peux faire date("m") pour le mois mais avec ta variable c'est pas possible...

Le plus simple a mon avis c'est tout simplement d'inverser dans ta chaine de caractere....
echo preg_replace('/^(.{2})-(.{2})-(.{4})$/','$3-$2-$1', $dateicdt);
(et tu mets les deux autres fonctions en commentaire pour pas avoir l erreur)
Tell me and I forget. Teach me and I remember. Involve me and I learn.

Eléphant du PHP | 70 Messages

27 févr. 2009, 15:33

oula j'ai pas tout compris la,
c'est quoi cette fonction preq_replace?
et les parametres que tu passes veulent dire quoi?

peux-tu m'expliquer cela stp?

dateicdt contient precisement sa "05/02/2009" comment faire le transformer en sa "2009/05/02" ?
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!

ViPHP
ViPHP | 1996 Messages

27 févr. 2009, 15:41

J'ai pas plus de reussite, il me renvoit toujours
Fatal error: Call to undefined function 05/02/2009() in c:\wamp\www\appli\recherche\recherchermanager.php on line 43
ligne 43 correspondant a
$date_temp = mktime(0,0,0, $dateicdt("m"), $dateicdt("d"), $dateicdt("Y")); 
Est ce que $dateicdt est un tableau associatif ? Si oui : $dateicdt["m"] et non $dateicdt("m") et les autres aussi.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Mammouth du PHP | 1353 Messages

27 févr. 2009, 15:42

Exactement en faisant le preg_replace...

C'est une fonction basée sur les expressions régulières qui va en gros faire la chose suivante : elle cherche 2 chiffre un / 2 chiffres un / et 4 chiffres et elle inverse le tout :)
$d_temp = "05/02/2009";
$d = preg_replace('/^(.{2})\/(.{2})\/(.{4})$/','$3-$2-$1', $d_temp);
echo $d; //affiche 2009-02-05
ou encore :
$d_temp = "05/02/2009";
$d = preg_replace('/^(.{2})\/(.{2})\/(.{4})$/','$3-$1-$2', $d_temp);
echo $d; //affiche 2009-05-02
Modifié en dernier par guilt92 le 27 févr. 2009, 15:47, modifié 1 fois.
Tell me and I forget. Teach me and I remember. Involve me and I learn.

ViPHP
ViPHP | 1996 Messages

27 févr. 2009, 15:45


dateicdt contient precisement sa "05/02/2009" comment faire le transformer en sa "2009/05/02" ?
Si c'est sous la forme 05/02/2009 = jj/mm/aaaa séparé par des / tu peux utiliser la fonction explode qui te mettra ta chaine en tableau :
$tableau_temp = explode ("/",$dateicdt);
echo $tableau_temp[0] ; //affichera le jour
echo $tableau_temp[1] ; //affichera le mois
echo $tableau_temp[2] ; //affichera l'année
Dans ton mktime :
$date_temp = mktime(0,0,0, $tableau_temp[1], $tableau_temp[0],  $tableau_temp[2]);
Si c'est toujours ce que tu veux...
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 70 Messages

27 févr. 2009, 15:51

Aureusms pour ta reponse mais dateicdt n'est pas un tableau associatif.
merci a toi oci guilt92 pour ta fonction preq_replace qui fonctionne bien j'ai enfin reussi ( plus exactement presque reussi ) a faire ce que je voulais grace a elle.
tu m'as mis sur la bonne voie

merci quand même Aureusms d'avoir essayer de m'aider.

Il me reste plus qu'a adapter sa encore car quelque petit pepin persiste, jvais travailler sa

MERCI
La devise du vrai Geek ==> Plus tu dors moins t'es fort !!