Conversion de date

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Conversion de date

par Aureusms » 27 févr. 2009, 20:49

Pas de quoi :wink:

par Arkonara » 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

par Aureusms » 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...

par guilt92 » 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

par Aureusms » 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.

par Arkonara » 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" ?

par guilt92 » 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)

par Arkonara » 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")); 

par guilt92 » 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 ?

par Arkonara » 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

par guilt92 » 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...

par Arkonara » 27 févr. 2009, 15:08

merci guilt92, mais ne peut -ton pas les inverser a notre guide?

par guilt92 » 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 ?

par Arkonara » 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

par guilt92 » 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...