[php] Convertion de date

Convertion de date [php] - Programmation

Marsh Posté le 14-02-2002 à 12:00:59    

Salut à tous!
 
J'utilise PHP et Mysql. Mon petit problème c'est que mysql stocke les dates au formant AAAA-MM-JJ et mes utilisateurs risquent de pas trop aimer et de préférer JJ-MM-AAAA.
Comment convertir cela en PHP, ou peut-être avec de javascript...


---------------
.
Reply

Marsh Posté le 14-02-2002 à 12:00:59   

Reply

Marsh Posté le 14-02-2002 à 12:30:04    

la meilleure solution : le "timestamp" => fonctions time(), mkTime() etc...
mais si tu tiens à ta solution, utilise des regex pour transformer ça...
 
dans le genre :
$jjmmaaaa = ereg_replace('([0-9]{4})-([0-9]{2})-([0-9]{2})', '\\3-\\2-\\1', $aaaammjj);

 

[jfdsdjhfuetppo]--Message édité par M@nu--[/jfdsdjhfuetppo]

Reply

Marsh Posté le 14-02-2002 à 13:33:11    

Une fois de plus, la solution est dans la DOC !
http://www.mysql.com/doc/D/a/Date_ [...] tions.html
 
exemple :
SELECT DATE_FORMAT(ma_date,'%Y/%m/%d';) as fr_date FROM ma_table


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 14-02-2002 à 13:34:30    

Mara's dad a écrit a écrit :

Une fois de plus, la solution est dans la DOC !
http://www.mysql.com/doc/D/a/Date_ [...] tions.html
 
exemple :
SELECT DATE_FORMAT(ma_date,'%Y/%m/%d';) as fr_date FROM ma_table  




 
Ils sont pénibles à la fin :lol: :lol: :lol: :lol:

Reply

Marsh Posté le 14-02-2002 à 13:41:48    

Mara's dad a écrit a écrit :

Une fois de plus, la solution est dans la DOC !
http://www.mysql.com/doc/D/a/Date_ [...] tions.html
 
exemple :
SELECT DATE_FORMAT(ma_date,'%Y/%m/%d';) as fr_date FROM ma_table  




sauf qu'il est préférable de ne pas faire travailler mysql pour rien alors que php est + rapide pour ce genre de choses :)

Reply

Marsh Posté le 14-02-2002 à 13:43:11    

Je ne dirais pas "pénibles" !
 
Mais c'est sûr qu'on n'a pas l'impression que les recherches sont allées très loin.
 
Celà dit, on s'est tous un jour cassé les dents sur des problèmes de dates !
 
En regardant la doc MySql sur la fonction DATE_FORMAT, j'ai remarqué à quel point elle est complète, cette fonction.
 
Avec DATE_FORMAT('1999-01-01', '%X %V';) elle te sort :
1998 52
C'est à dire l'année et le numéro de la semaine de la date en question (La semaine commence un dimanche en MySql)
 
Peut-être un peu superflu comme fonction.
Si j'avais eu à calculer ce genre de chose, je ne sais pas si j'aurrai pensé à DATE_FORMAT !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 14-02-2002 à 13:49:40    

skylight a écrit a écrit :

 
sauf qu'il est préférable de ne pas faire travailler mysql pour rien alors que php est + rapide pour ce genre de choses :)  




 
Si tu le dis !
J'avoue ne pas avoir testé toutes les fonctions de MySQL convertible en PHP et réciproquement pour savoir quelle technique me fera gagner 1ms par page !


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 14-02-2002 à 14:52:20    

ok merçi pour vos réponse je vais tenter tout ça. Je pense que je vais essayer par MySQL.


---------------
.
Reply

Marsh Posté le 14-02-2002 à 15:44:18    

fais une fonction qui découpe ta chaine d'entrée avec un split et qui stocke les valeurs dans un tableau et recompose ta chaine dans l'autre sens pr etre compatible avec les fonctions prédéfinies...
comme ça, pas besoin de gener tes utilisateurs.

Reply

Marsh Posté le 19-02-2002 à 13:33:26    

$jour = substr($dateheure,8,2)." ";
 $mois = substr($dateheure,5,2);
 
 if($mois ==1){$mois = "janvier ";}
 if($mois ==2){$mois = "février ";}
 if($mois ==3){$mois = "mars ";}
 if($mois ==4){$mois = "avril ";}
 if($mois ==5){$mois = "mai ";}
 if($mois ==6){$mois = "juin ";}
 if($mois ==7){$mois = "juillet ";}
 if($mois ==8){$mois = "août ";}
 if($mois ==9){$mois = "septembre ";}
 if($mois ==10){$mois = "octobre ";}
 if($mois ==11){$mois = "novembre ";}
if($mois ==12){$mois = "décembre ";}
 
 
 $annee = substr($dateheure,0,4). " à ";
 $heure = substr($dateheure,11,8);
 
$dateheure=$jour.$mois.$annee.$heure;
 
 
 
$d=$edttime;
 $edttime = substr($d,8,2)."-";
 $edttime = $edttime.substr($d,5,2)."-";
 $edttime = $edttime.substr($d,0,4). " à ";
 $edttime = $edttime.substr($d,11,8);

Reply

Marsh Posté le 19-02-2002 à 13:33:26   

Reply

Marsh Posté le 19-02-2002 à 13:47:20    

:lol: Pourquoi faire simple quand on peut faire compliqué ! :lol:
 
Version simple (2 lignes de PHP ) : http://www.surleau.com/temp/date.php
 
La doc : http://www.php.net/manual/en/function.strftime.php


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 19-02-2002 à 16:51:18    

oui mais ca ne marche qu'avec time()

Reply

Marsh Posté le 19-02-2002 à 17:00:55    

echo (strftime( "%A %d %B %Y à %H:%M:%S",mktime($dateheure)));
 
 ne marche ^pas

Reply

Marsh Posté le 19-02-2002 à 18:01:09    

kyo54 a écrit a écrit :

Salut à tous!
 
J'utilise PHP et Mysql. Mon petit problème c'est que mysql stocke les dates au formant AAAA-MM-JJ et mes utilisateurs risquent de pas trop aimer et de préférer JJ-MM-AAAA.
Comment convertir cela en PHP, ou peut-être avec de javascript...  




 
pour éviter qu'ils se posent la question, tu devrais peut être créer 3 inputs select, un pour le jour, un pour le mois, un pour l'année, placés dans cet ordre.
 
ensuite tu envoie à la base $date="$année/$mois/$jour"
 
Quand tu récupère dans l'autre sens pour les selected, tu fais
$annee=substr($date,0,4);
$mois=substr($date,5,2);
$jour=substr($date,8,2);
 
Enfin, c'est ce que je fais, c'est plus simple pour l'utilisateur qui peut pas se tromper...

Reply

Marsh Posté le 19-02-2002 à 21:01:59    

skylight a écrit a écrit :

echo (strftime( "%A %d %B %Y à %H:%M:%S",mktime($dateheure)));
 
 ne marche ^pas  




<?php  
setlocale ("LC_TIME", "fr_FR" );  
echo( strftime( "%A %d %B %Y à %H:%M:%S", strtotime("1999-12-25 12:10:05" ) ) );  
echo( "<HR>" );  
show_source( "date.php" );  
?>  
chez moi : http://www.surleau.org/tmp/date.php
Cà marche !

Reply

Marsh Posté le 19-02-2002 à 23:10:19    

merci ca marche , il fallait faire strtotime :)

Reply

Marsh Posté le 20-02-2002 à 15:42:59    

pudaipiai a écrit a écrit :

 
 
pour éviter qu'ils se posent la question, tu devrais peut être créer 3 inputs select, un pour le jour, un pour le mois, un pour l'année, placés dans cet ordre.
 
ensuite tu envoie à la base $date="$année/$mois/$jour"
 
Quand tu récupère dans l'autre sens pour les selected, tu fais
$annee=substr($date,0,4);
$mois=substr($date,5,2);
$jour=substr($date,8,2);
 
Enfin, c'est ce que je fais, c'est plus simple pour l'utilisateur qui peut pas se tromper...  




 
oui t'as raison, c mieux! J'ai fait ça tranquilou!

 

[jfdsdjhfuetppo]--Message édité par kyo54--[/jfdsdjhfuetppo]

Reply

Sujets relatifs:

Leave a Replay

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