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

captcha

Saisir le code à 5 caractères après le III

*: Champs obligatoires. Votre adresse e-mail ne sera jamais rendue publique ni transmise à des tiers.

Commentaires

gravatar_the_lxs
the_lxs 29.04.2009, 15:41:36 Merci Jean-Paul!
Je vais pouvoir convertir mes datetime de ma base de données !!!
gravatar_the_lxs
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]
gravatar_Astanos
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 ;)