conversion de date

conversion de date - PHP - Programmation

Marsh Posté le 17-03-2007 à 20:24:31    

hello,
 
j'ai dans une variable $datefr une date sous la forme  
 
jj/mm/aaaa
 
je voudrais la convertir simplement pour obtenir une variable $dateus sous la forme  
 
yyyy-mm-dd (format SQL)
 
Comment faire? ;)
Merci d'avance


---------------
"L'imagination est plus importante que le savoir : le savoir est limité, l'imagination fait le tour du Monde" - Albert Einstein
Reply

Marsh Posté le 17-03-2007 à 20:24:31   

Reply

Marsh Posté le 17-03-2007 à 21:58:16    

Bonsoir,  
 
A vue de nez je ne connais que deux méthodes (simples).
Ces méthodes on déjas été expliquées sur ce forum, une petite recherche aurait été plus rapide pour toi   :)  
 

Code :
  1. <?PHP
  2. // Voici un format de date Française
  3. $date_fr = '17/03/2007';
  4. // Méthose avec substr
  5. $date_us = substr ($date_fr, 6, 4);
  6. $date_us .= '-';
  7. $date_us .= substr ($date_fr, 3, 2);
  8. $date_us .= '-';
  9. $date_us .= substr ($date_fr, 0, 2);
  10. Echo 'Méthode avec substr : '.$date_fr.' - Se transforme en : '.$date_us.'<br>';
  11. // Méthose avec explode
  12. $date_us = explode ( '/', $date_fr );
  13. $date_us = $date_us[2].'-'.$date_us[1].'-'.$date_us[0];
  14. Echo 'Méthode avec explode : '.$date_fr.' - Se transforme en : '.$date_us.'<br>';
  15. ?>


 

Reply

Marsh Posté le 18-03-2007 à 14:43:26    

Merci beaucoup ;)  :hello:  
 
Honte sur moi, je n'ai même pas pensé à la recherche  :sweat:  
 
 
 :D


Message édité par juho_05 le 18-03-2007 à 14:44:03

---------------
"L'imagination est plus importante que le savoir : le savoir est limité, l'imagination fait le tour du Monde" - Albert Einstein
Reply

Marsh Posté le 18-03-2007 à 18:09:26    

On ne concatène pas les chaines affichées par echo avec un point  [:pingouino]


---------------
Mains power can kill, and it will hurt the entire time you’re dying from it.
Reply

Marsh Posté le 18-03-2007 à 18:19:44    

Shinuza a écrit :

On ne concatène pas les chaines affichées par echo avec un point  [:pingouino]


 :heink: tu concatènes avec quoi ?

Reply

Marsh Posté le 18-03-2007 à 18:52:20    

On ne concatène pas, on balance plusieurs arguments à echo à la place (virgule, donc). C'est (probablement) nettement plus performant, donc quand on peut y penser, c'est mieux.
 
(Et d'ailleurs, pendant qu'on y est, si l'on a besoin de construire une longue chaîne sans l'afficher, il est de bon usage de penser au combo ob_start/echo/ob_get_clean.)


---------------
StarCraft Professional Gaming Database | [Ze Topic] Starcraft/BroodWar
Reply

Marsh Posté le 18-03-2007 à 18:57:16    

sielfried a écrit :

On ne concatène pas, on balance plusieurs arguments à echo à la place (virgule, donc). C'est (probablement) nettement plus performant, donc quand on peut y penser, c'est mieux.
 
(Et d'ailleurs, pendant qu'on y est, si l'on a besoin de construire une longue chaîne sans l'afficher, il est de bon usage de penser au combo ob_start/echo/ob_get_clean.)

D'accord, ma remarque porté pas là dessus, mais sur le point en lui même pour la concaténation :o

Reply

Marsh Posté le 18-03-2007 à 20:30:22    

au passage , il y a plus simple ( avec le expressions régulières )

Code :
  1. if (ereg ("([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})", $date, $regs))
  2. {
  3.     $date-fr=$regs[3].'-'.$regs[2].'-'.$regs[1];
  4. }
  5. else
  6. {
  7. echo $date,' n est pas un format valide';
  8. }


Message édité par flo850 le 18-03-2007 à 20:30:59
Reply

Marsh Posté le 19-03-2007 à 08:16:18    

elle est mauvaise ta regexp, car là je peux rentrer 2888/99/00 qui n'est pas une date au passage
 
^([0-9]{4})-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
 
Elle est mieux come cela la bestiole nan :o ?
 donc on garde le premier qui va de 0000 à 9999 (la flème de le changer)
le second fait des groupes de 01 à 09 puis de 10 à 12
le troisième idem : de 01 à 09 puis de 10 à 29 puis 30 ou 31

Reply

Marsh Posté le 19-03-2007 à 08:16:48    

le mieux serait de passer par l'outil date en balancant un mktime et d'autres tralala, mais la gestion des dates en php ca puducu

Reply

Marsh Posté le 19-03-2007 à 08:16:48   

Reply

Marsh Posté le 19-03-2007 à 09:43:58    

si tu veux aller par la , ta regexp accepte le 31/02/2009
 
les regexp sont pas fait pour faire du controle numérique ( le pire est de valider une adresse ip en regexp )  
 
la c'est juste du changement de format, donc j'ai considéré que la date etait valide  
 
Mais sinon, d'une manière plus propre, il vaut mieux se faire une petite classe de gestion des dates

Reply

Marsh Posté le 19-03-2007 à 09:47:10    

après cette regexp, il suffit de rajouter un test à base de checkdate() : http://fr.php.net/manual/fr/function.checkdate.php

Reply

Marsh Posté le 19-03-2007 à 10:28:56    

autant directement balancer un coup de checkdate() nan :o

Reply

Marsh Posté le 19-03-2007 à 10:33:49    

gatsu35 a écrit :

autant directement balancer un coup de checkdate() nan :o


 
ben avant faut bien extraire les 3 champs (jj, mm, aaaa) pour pouvoir utiliser cette fonction.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed