ou bien: date("w", strtotime($date));
Pour plus de pratique, voici une fonction que j'ai écrite à l'occasion, qui formate une date donnée selon un format donné.
Le principe est de pouvoir donner un format style "jj/mm/aaaa" ou "jjjj j mmmm aaaa" etc. et le programme doit remplacer les formats j, m et a par les parties adéquates de la date donnée.
Donc, si le symbole est j ou jj alors le remplacer par le n° du jour mais si c'est jjj ou jjjjj faudra remplacer par le nom du jour (abrégé ou complet)
Et même principe pour les symboles du mois, de l'année et pourquoi pas l'heure, minutes et secondes.
Programme : dateFormat.php
<?php
// excéute et retourne la date formatée selon la demande
echo dateFormat($_GET["date"]?$_GET["date"]:date("Y-m-d H:i:s"), $_GET["format"]?$_GET["format"]:"jjjj j mmmm aaaa h:m:s");
// fonctions du traitement
function dateFormat($date=null, $format="jjjj j mmmm aaaa h:m:s"){
// absence du format = retourne la date telle qu'elle
if (trim($date) == "") $date = date("Y-m-d H:i:s"); // date courante si vide
if (trim($format) == "") return $date;
// décomposition du format de la date (on remplace tout séparateur possible par espace pour unifier le critère de décomposition sans modifier le format d'origine)
if (strchr($format, "/")!== FALSE) {$format_modifié = str_replace("/", " ", $format);}
else if (strchr($format, "-")!== FALSE) {$format_modifié = str_replace("-", " ", $format); }
else if (strchr($format, ".")!== FALSE) {$format_modifié = str_replace(".", " ", $format); }
else $format_modifié = $format;
//
$parties = explode(" ", $format_modifié); // décomposition du format selon le séparateur : espace
// traitements des parties de la date : jour, mois, année et temps
foreach ($parties as $i=>$partie){
switch ($partie){
// Jour
case "j" : $format = str_replace($partie, date("j", strtotime($date)), $format); break;
case "jj" : $format = str_replace($partie, date("d", strtotime($date)), $format); break;
case "jjj" : $format = str_replace($partie, substr(getJourFr(date("w", strtotime($date))), 0, 3), $format); break;
case "jjjj" : $format = str_replace($partie, getJourFr(date("w", strtotime($date))), $format); break;
// Mois
case "m" : $format = str_replace($partie, date("n", strtotime($date)), $format); break;
case "mm" : $format = str_replace($partie, date("m", strtotime($date)), $format); break;
case "mmm" : $format = str_replace($partie, substr(getMoisFr(date("m", strtotime($date))), 0, 3), $format); break;
case "mmmm" : $format = str_replace($partie, getMoisFr(date("m", strtotime($date))), $format); break;
// Année
case "aa" : $format = str_replace($partie, date("y", strtotime($date)), $format); break;
case "aaaa" : $format = str_replace($partie, date("Y", strtotime($date)), $format); break;
// temps
case "h" : $format = str_replace($partie, date("H A", strtotime($date)), $format); break;
case "h:m" : $format = str_replace($partie, date("H:i A", strtotime($date)), $format); break;
case "h:m:s" : $format = str_replace($partie,date("H:i:s A", strtotime($date)), $format); break;
}
}
// retourne le format modifié par la date formatée
return $format;
}
// fonction de traduction des noms jours et mois en français
function getJourFR($j){
switch ($j){
case 1: return "Lundi";
case 2: return "Mardi";
case 3: return "Mercredi";
case 4: return "Jeudi";
case 5: return "Vendredi";
case 6: return "Samedi";
default: return "Dimanche";
}
}
function getMoisFR($m){
switch ($m){
case 2: return "Février";
case 3: return "Mars";
case 4: return "Avril";
case 5: return "Mai";
case 6: return "Juin";
case 7: return "Juillet";
case 8: return "Août";
case 9: return "Septembre";
case 10: return "Octobre";
case 11: return "Novembre";
case 12: return "Décembre";
default: return "Janvier";
}
}
?>
Pour la tester, taper les jeux d'essai suivants:
dateFormat.php?date=2008-11-8 02:00&format=jjjj j mmmm aaaa h
s
dateFormat.php?date=2008-11-8 02:00&format=jj/mm/aaaa h
s
dateFormat.php?date=2008-11-8 02:00&format=jj-mm-aa h:m
dateFormat.php?date=2008-11-8 02:00&format=jj.mm.aaaa h
ou encore :
dateFormat.php?date=2008-11-8 02:00&format=Le jjjj j mmmm aaaa à h:m
etc.
Par contre, les séparateurs pris en charge dans cette version sont limités à : espace / - et .
Et seulement les : pour les heures