Conversion de dates
By Geoffrey on Sunday 15 January 2006, 06:08 - Le saviez vous ? - Permalink
En PHP pour traiter des dates, on peut utiliser PEAR::Date, mais quand on ne peut/veut pas (pour une raison quelconque), et qu'on veut convertir une date au format SQL vers le format fr (ou l'inverse), on peut utiliser les bouts de code suivant:
<?php // ceci est une date au format SQL $date = date('Y-m-d'); // conversion SQL -> fr $date = date('d/m/Y', strtotime($date)); // conversion fr -> SQL $date = vsprintf('%3$d-%2$02d-%1$02d', sscanf($date, '%d/%d/%d')); ?>
On ne peut pas utiliser strtotime dans le sens fr -> SQL car il la traitera comme une date au format m/d/Y le bougre (alors que nous c'est d/m/Y).
Comments
Tu pouvais pas le dire plus tot ? J'ai du utiliser les regexp a mon taf pour faire date fr -> date SQL et je trouvais ca bien crados, bon ben je connais 2 nouvelles fct php :)
Mmm... Avis perso, mais j'ai jamais pu blairer les fonctions du style printf et scanf. Avec regex, ça tient dans la main :
$date = ereg_replace('^(0-9{2,4})-(0-9{1,2})-(0-9{1,2})$', '\\3/\\2/\\1', $date_mysql);
Ou l'inverse : $date_mysql = ereg_replace('^(0-9{1,2})/(0-9{1,2})/(0-9{2,4})$', '\\3-\\2-\\1', $date);
a mon avis, la regexp doit etre moins performante que printf/scanf
bon moi, j'ai fait comme toi kNo'... mais en utilisant preg au lieu de ereg... Est-ce qu'on peut me dire une bonne fois pour toute pourquoi il y a 2 types de fonctions d'expressions régulieres en php et surtout laquelle utiliser ???
kNo': c'était justement pour éviter d'utiliser des regex :)
cela dit, autant je trouve la solution a base de strtotime élégante et simple, autant pour l'autre, tant la solution vsprintf/sscanf que la solution (ereg|preg)_replace me semblent crados :/
Sympa bordel, ça change des codes super crades de 20 lignes qu'on trouve sur le net ;)
ciao et bonne continuation!