Conversion de Dates & PHP

En développant différents projets web, je me suis souvent fait chier amuser à recréer sans cesse des petites fonctions PHP qui me permettaient de transformer une date au format SQL en une date à afficher dans un format précis ou le contraire.

Par manque de temps, les fonctions ainsi réalisées n’étaient pas portables d’un projet à un autre car je me limitait a faire une conversion d’un format de date fixe à un autre format fixe du type. Afin de pallier à ce petit soucis j’ai créé 2 petites fonctions de conversion de date , je pense qu’il existe probablement déjà ce type de fonction sur le net mais j’avoue ne pas les avoir trouvées.

Les deux fonctions, utilisent les expressions régulières afin d’analyser le format des dates et de vérifier leur validité.
la première fonction mysqltodate(str,masque) prend en parametre deux chaines de caractères :

  1. /***************************************

  2. * Description : fonction de conversion d’une date au format SQL

  3. *  en date au format jj mm aaaa

  4. *  suivant le masque défini par l’utilisateur

  5. * Auteur : Loctar

  6. ***************************************/

  7.  

  8. function mysql_to_date($dt,$masque)

  9. {

  10. if (ereg (“([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})”, $dt, $tabDate))

  11. {

  12. if(checkdate($tabDate[2],$tabDate[3],$tabDate[1]))

  13. {

  14. $chaine_date = array($tabDate[3],$tabDate[2],$tabDate[1]);

  15. $chaine_masque = array(“jj”,“mm”,“aaaa”);

  16. $strDate=str_replace($chaine_masque,$chaine_date,$masque);

  17. return $strDate;

  18. }

  19. }

  20. return false;

  21. }

L’autre fonction permet d’obtenir la conversion inverse, c’est à dire d’un format jj mm aaaa dans un ordre qqconque vers un date au format SQL.

la fonction datetomysql(str,masque) prend egalement 2 chaines de caractères en parametre :

  1. /***************************************

  2. * Description : fonction de conversion d’une date

  3. * au format jj mm aaaa respectant un

  4. * masque donné en date au format SQL aaaa-mm-jj

  5. * Auteur : Loctar

  6. ***************************************/

  7. function date_to_mysql($dt,$masque)

  8. {

  9. $base = array(“([0-9]{1,2})”,“([0-9]{1,2})”,“([0-9]{4})”);

  10. $chaine = array(“jj”,“mm”,“aaaa”);

  11. $expression=str_replace($chaine,$base,$masque);

  12.  

  13. if (ereg ($expression, $dt, $tabDate))

  14. {

  15. if(count($tabDate)==4)

  16. {

  17. $posJour=strpos($masque,“jj”);

  18. $posMois=strpos($masque,“mm”);

  19. $posAnnee=strpos($masque,“aaaa”);

  20. $tabRank=array(“jj”=>$posJour,“mm”=>$posMois,“aaaa”=>$posAnnee);

  21. asort($tabRank);

  22. $i=1;

  23. foreach ($tabRank as $index => $valeur)

  24. {

  25. $tabRank[$index]=$i;

  26. $i++;

  27. }

  28. if(checkdate($tabDate[$tabRank[“mm”]],$tabDate[$tabRank[“jj”]],$tabDate[$tabRank[“aaaa”]]))

  29. {

  30. return $tabDate[$tabRank[“aaaa”]].“-”.$tabDate[$tabRank[“mm”]].“-”.$tabDate[$tabRank[“jj”]];

  31. }

  32. }

  33. }

  34. return false;

  35. }

Je sais que ces deux fonctions n’ont rien d’extraordinaire mais elles permettront peut-être à qquns de gagner un peu de temps ou alors de comprendre le mécanisme des expressions régulières pour d’autres.

Si vous avez apprécié cet article, s'il vous plait, prenez le temps de laisser un commentaire ou de souscrire au flux afin de recevoir les futurs articles directement dans votre lecteur de flux.

Commentaires

j’ai rien compris mais merci :)

Apro Lyon Blog

Comptoir de la Pizza le vendredi 8 septembre 2006.
Adresse : 5 Rue Sainte Clotilde, 69001 Lyon.

Inscription sur http://www.lyon-blog.fr

Donc, si tout se passe bien pour la conversion de dates, le truc c’est de faire sonner le réveil avant l’heure définie.
Ensuite, après avoir rentré toute la série de commandes ( un truc qui donne des crampes aux yeux ) keski se passe ? c’est du chinois pour moi :p lol
j’ai rien compris.
Mais apparement, il s’agit d’une de ces formules magiques qui changent la vie d’un programmeur PHP ! :p
Loc !! Qu’est-ce qu’ils ont fait de toi !?

J’ai relu … puis encore une nouvelle fois. je vais t’avouer quelque chose : je n’ai toujours rien compris.

Laisser un commentaire

(requis)

(requis)