PHP: Formater les DATE ou DATETIME de MySQL
25.06.2008 Tags: tutoriel,PHP,English version available here! Je suis tombé l'autre jour sur un site proposant divers scripts et fonctions PHP, dont un permettant de transformer les dates de MySQL (format AAAA-MM-JJ) en format "humain", c'est-à-dire JJ-MM-AAAA. Leur méthode (enfin je dis "leur", mais c'est celle utilisée presque partout...) est de faire un explode() de la chaine de caractère, de recréer un tableau avec les valeurs inversées puis de faire un implode avec le délimiteur choisi. Ca nous donne quelque chose comme ça:<?php
function dateConv($value) {
$table = explode('-',$value);
$temp_array = array();
for ($i=2;$i>=0;$i--) {
array_push($temp_array,$table[$i]);
}
$final = implode('/',$temp_array);
print_r($final);
}
?>
Mouais, ça marche mais il y a plus simple: en utilisant les fonctions strtotime() et strftime().
strtotime() convertit une date de format anglais en timestamp.
strftime() formate une date selon le format indiqué.
Bon c'est bien beau tout ça, mais concrètement ça nous donne quoi?
<?php
function dateConv($value) {
$final = strftime('%d-%m-%Y', strtotime($value));
print_r($final);
}
?>
On convertit la valeur $value (notre date) en timestamp pour ensuite la formater selon le format voulu, ici un format du type JJ-MM-AAAA.
Nous pouvons même aller un peu plus loin et convertir un format DATETIME:
<?php
function dateConv($value) {
$final = strftime('%d-%m-%Y %T', strtotime($value)); // %T équivaut au format d'heure HH:MM:SS
print_r($final);
}
?>
En supposant que notre DATETIME vaut 2008-08-25 22:47:04 la fonction nous retournera 25-08-2008 22:47:04
Il est également possible de ne retourner que la date d'un DATETIME. Pour obtenir celà, enlevez le tag de formatage ' %T'.
Et tant qu'à faire, pourquoi ne pas définir notre délimiteur? Pas tout le monde veut une date avec des valeurs séparées par des -, mais préfère des /
<?php
function dateConv($value,$delimiter) {
$final = strftime('%d'.$delimiter.'%m'.$delimiter.'%Y %T', strtotime($value));
print_r($final);
}
?>
Rendez-vous sur php.net pour avoir la liste des tags de formatage.
Ajouter un commentaire
Commentaires
the_lxs
29.04.2009, 16:05:20
Il est même possible de mettre "%H:%M:%S" à la place de "%T" ; ce qui aura pour effet d'avoir :
[code]
< 14 h 13 m 35 s >
[/code]
au lieu de :
[code]
< 14:13:35 >
[/code]
[code]
< 14 h 13 m 35 s >
[/code]
au lieu de :
[code]
< 14:13:35 >
[/code]
Astanos
29.04.2009, 19:10:45
Mais je t'en prie Micheline =)
Oui, à partir de là les possibilités sont nombreuses grace aux différents formats dispos pour strftime()
Merci pour le commentaire en tout cas ;)
Oui, à partir de là les possibilités sont nombreuses grace aux différents formats dispos pour strftime()
Merci pour le commentaire en tout cas ;)





Je vais pouvoir convertir mes datetime de ma base de données !!!