[RESOLU]converstion AAAA-MM-JJ en JJ-MM-AA

converstion AAAA-MM-JJ en JJ-MM-AA [RESOLU] - PHP - Programmation

Marsh Posté le 07-03-2006 à 16:37:17    

bonjour je cherche ude l'aide pour me permettre de transformer mon format de date
qui est AAAA-MM-JJ en JJ-MM-AAAA
merci de votre aide


Message édité par infoman64 le 07-03-2006 à 17:37:42
Reply

Marsh Posté le 07-03-2006 à 16:37:17   

Reply

Marsh Posté le 07-03-2006 à 16:40:55    

'lut...
bon moi je suis une quiche, mais je vais te dire comment je fais...
après d'autres te donnerons surement une autre solution.
 
tu fais un explode pour ta variable date. tu mets comme séparateur "-".
tu vas te récupérer trois variables (année , mois et jour)
enfin,
tu crées une variable concaténée :
 variable = var(jour).' -' .var(mois).'-'. var(année);
 
voilou!!


Message édité par flock86 le 07-03-2006 à 16:41:46
Reply

Marsh Posté le 07-03-2006 à 16:41:46    

J'ai créer ces 2 fonctions... si ça peut t'aider.
 

Code :
  1. //fonction qui permet de convertir une date format JJ/MM/AAAA en format AAAA-MM-JJ (compatible date MySQL)
  2. function convertDateFrMysql($date_fr)
  3. {
  4.   //supprime les espaces en début et fin de saisie
  5.   $date_fr = trim($date_fr);
  6.   //remplace les slashs par des traits-d'union
  7.   $date_fr = ereg_replace("[/]","-", $date_fr);
  8.   //sépare les éléments de la date
  9.   $tabdate_fr = explode('-',$date_fr);
  10.   //format : $timestamp = mktime($heure, $minute, $seconde, $mois, $jour, $annee);
  11.   //affiche le nb de secondes depuis le 01-01-1970
  12.   $ts_date = mktime(0, 0, 0, $tabdate_fr[1], $tabdate_fr[0], $tabdate_fr[2]);
  13.   //mise en forme de la date format MySQL
  14.   $date_mysql = date("Y-m-d", $ts_date);
  15.   return $date_mysql;
  16. }
  17. //fonction qui permet de convertir une date format AAAA/MM/JJ en format JJ-MM-AAAA (compatible date française)
  18. function convertDateMysqlFr($date_mysql)
  19. {
  20.   //supprime les espaces en début et fin de saisie
  21.   $date_mysql = trim($date_mysql);
  22.   //remplace les slashs par des traits-d'union
  23.   $date_mysql = ereg_replace("[/]","-", $date_mysql);
  24.   //sépare les éléments de la date
  25.   $tabdate_mysql = explode('-',$date_mysql);
  26.   //format : $timestamp = mktime($heure, $minute, $seconde, $mois, $jour, $annee);
  27.   //affiche le nb de secondes depuis le 01-01-1970
  28.   $ts_date = mktime(0, 0, 0, $tabdate_mysql[1], $tabdate_mysql[2], $tabdate_mysql[0]);
  29.   //mise en forme de la date format MySQL
  30.   $date_fr = date("d-m-Y", $ts_date);
  31.   return $date_fr;
  32. }

Reply

Marsh Posté le 07-03-2006 à 16:42:44    

oui bon sinon tu as l'option tu lis la doc et tu utilises les fonctions toutes faites...
strftime et stroftime


Message édité par anapajari le 07-03-2006 à 16:44:32
Reply

Marsh Posté le 07-03-2006 à 16:43:02    

bon bah voilà...
du tout cuit du tout propre...
que demander de plus?

Reply

Marsh Posté le 07-03-2006 à 17:00:27    

En effet anapajari, j'aurais pu faire plus simple.

Reply

Marsh Posté le 07-03-2006 à 17:18:18    

en fait c'est pas vraiment plus simple :o
stroftime ne prend pas les chaines par defaut avec le -, il lui faut des slashs donc faut faire un replace. Alors bon s'il est sur de ses dates autant les tripatouiller directement.
 
Cela devient vraiment interessant en utilisant mktime:

Code :
  1. $a = "12/31/2001";
  2. $t = split('/', $a);
  3. print strftime("%d-%m-%Y",mktime(0,0,0,$t[0],$t[1],$t[2]));


qui donne

Code :
  1. 31-01-2002


Pourquoi c'est mieux? parce que si la date est "érronée" le truc s'en sort tout seul. Par exemple pour "12/32/2002", cela donne:

Code :
  1. 01-01-2003


Et qu'a la limite on peut même passer des chiffres négatifs: "02/-33/2006"

Code :
  1. 30-12-2005


Message édité par anapajari le 07-03-2006 à 17:20:22
Reply

Marsh Posté le 09-03-2006 à 12:46:34    

ben moi je fais plus simple :p

Code :
  1. function ReverseDate($Date)
  2. {
  3. return implode('-',array_reverse(explode('-',str_replace('/','-',$Date)))) ;
  4. }


Et ca marche dans les deux sens ;)

Reply

Sujets relatifs:

Leave a Replay

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