Page 1 sur 2
Conversion de date
Posté : 27 févr. 2009, 14:48
par Arkonara
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
Posté : 27 févr. 2009, 14:52
par guilt92
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...
Posté : 27 févr. 2009, 14:59
par Arkonara
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
Posté : 27 févr. 2009, 15:06
par guilt92
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 ?
Posté : 27 févr. 2009, 15:08
par Arkonara
merci guilt92, mais ne peut -ton pas les inverser a notre guide?
Posté : 27 févr. 2009, 15:10
par guilt92
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...
Posté : 27 févr. 2009, 15:14
par Arkonara
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
Posté : 27 févr. 2009, 15:18
par guilt92
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 ?
Posté : 27 févr. 2009, 15:22
par Arkonara
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"));
Posté : 27 févr. 2009, 15:27
par guilt92
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)
Posté : 27 févr. 2009, 15:33
par Arkonara
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" ?
Posté : 27 févr. 2009, 15:41
par Aureusms
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.
Posté : 27 févr. 2009, 15:42
par guilt92
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
Posté : 27 févr. 2009, 15:45
par Aureusms
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...
Posté : 27 févr. 2009, 15:51
par Arkonara
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