
C'est la fonction date qui permet de récupérer la date du jour :
echo date("d/m/y");
Il est très possible d'attribuer une valeur de date à une variable et de faire des calculs dessus :
$Annee = date("y");
$Annee = $Annee + 1;
echo "$Annee";
Afficherait 3 si on était en 2002.
Voici les lettres utilisées :
filemtime est une fonction qui renvoie la date de modiufication d'un certain fichier sous la forme d'un nombre entier. Soit un fichier MonTexte.txt se trouvant dans le dossier racine :
echo (filemtime("MonTexte.txt"))Renvoie 1028983194
Il s'agit de transformer cette valeur en date et heure. La fonction date possède un 2ème paramètre optionnel qui correspond à une valeur entière telle que 1028983194, et se charge de la mettre en forme. Si ce paramètre est omis, la date et heure courante sont rnvoyés.
Nous allons utiliser D, j, M, Y, G, i, s comme paramètre principal de
date pour obtenir la date et l'heure. Cette instruction renvoie la date et l'heure
courante
echo (date("D,
j.M.Y H:i:s"));
Sous cette forme :
Sat, 10.Aug.2002 19:32:37
Maintenant, ajoutons un nombre a convertir en date/heure, justement le nombre
1028983194 :
echo (date("D,
j.M.Y H:i:s", 1028983194));
qui donne :
Sat, 10.Aug.2002 14:39:54
Et ce nombre 1028983194 est en fait donc issu de filemtime("MonTexte.txt"). Nous allons tout naturellement remplacer 1028983194 par filemtime("MonTexte.txt"):
echo (date("D, j.M.Y H:i:s", filemtime("MonTexte.txt")));
Le TimeStamp représente le nombre de secondes écoulées depuis le premier janvier 1970. Pour donner un ordre d'idées, à 30 ans et 8 mois environs, vous fêtez votre milliardième seconde de vie sur cette terre. En d'autre mot, si nous étions en août 2000, le Timestamp serait de 1 milliard environ.
On peut obtenir ce TimeStamp depuis la fonction mktime. mktime accepte comme paramètre dans cet ordre précis :
mktime (Heures, Minutes, Secondes, Mois, Jour, Année)
Ainsi, si on écrit :
echo mktime (0, 0, 0, 8, 1, 2000);
(le premier août 2000, à minuit pile), nous obtiendrons le chiffre suivant :
965'080'800
Soit un peu plus de 965 millions de secondes, et donc presque un milliard. Ce qui est particulièrement intéressant avec cette fonction, c'est que vous pouvez installer des paramètres qui peuvent paraître étranges au premier abord : Cette ligne de code devrait planter :
echo mktime (0, 0, 0, 49, 1, 2000);
Puisqu'on demande le nombre de secondes écoulées jusqu'au 1.49.2000 (soit le 49ème mois de l'année 2000), mais il renvoie correctement :
1'072'911'600
Et ce qu'on pourrait consirérer comme un "bug" va finalement nosu faciliter la vie. Par exemple, imaginons que nous voulions récupérer une date en avance de 3 mois sur la date actuelle : admettons que nous soyons le 8.11.2002 : avec le TimeStamp de mktime, nous n'allons pas nous casser la tête à essayer de voir s'il intervient un changement d'année : Nous allons bêtement demander le 14ème mois de l'année 2002, qu'il va sagement transformer en février 2003, sans broncher.
Nous avons vu plus haut la fonction date avec des paramètres de formatage. Pour reccueillir le mois actuel, nous écririons :
date("m")
qui va, dans notre cas, renvoyer donc : 11. Ainsi, si nous demandons un affichage tel que :
echo date("m")+3;
Il va donc renvoyer 14. C'est donc ce chiffre que nous allons stocker :
echo mktime(0 , 0 , 0 , date("m")+3 , date("d") , date("Y"));
Va vonc nous renvoyer le nombre de secondes entre le 1.1.1970 et le 8.14.2002 - ou plutôt en fait le 8.2.2003. Et le plus fort vient maintenant : Nous allons REconvertir ce nombre de secondes en date "normale", grâce à la précieuse fonction date qui accepte donc 2 paramètres : Le format, et un TimeStamp :
echo date("d.m.Y" , mktime(0,0,0,date("m")+3,date("d"),date("Y")));
qui va afficher
8.2.2003
Le TimeStamp va nous aider à comparer des dates. Deux fonctions sont particulièrement intéressantes :
mktime et strtotime
mktime va nous permettre de transformer précisément une date ou date/heure en TimeStamp. mktime accepte 6 paramètres :
Heure, Minute, Seconde, Mois, Jour, Année
echo mktime(0 , 0 , 0 , date("m") , date("d") , date("Y"))
Va nous envoyer le TimeStamp d'aujourd'hui, à Minuit 0 minutes 0 secondes
strtotime va nous permettre d'obtenir un TimeStamp sans avoir besoin d'analyser en précision la chaîne de caractère censée contenir une date, car cette fonction comprend bien plusieurs formes de dates, comme par exemple :
echo strtotime("now");
echo strtotime("10 September 2000");
echo strtotime("+1 day");
echo strtotime("+1 week");
echo strtotime("+1 week 2 days 4 hours 2 seconds");
Admettons qu'on veuille comparer une date contenue dans une variable à la date d'aujourd'hui, et déterminer si elle est postérieure ou antérieure : Soit la variable $DateExpiration qui contient : 2003-12-31
if (strtotime($DateExpiration)
- mktime(0
, 0 , 0 , date("m") , date("d") , date("Y")))
< 0
echo "La date d'expiration est dépassée"
function DateConviviale($QuelleDate)
{
$NomJour = date("D", strtotime($QuelleDate));
$Jour = date("j", strtotime($QuelleDate));
$NomMois = date("M", strtotime($QuelleDate));
$Annee = date("Y", strtotime($QuelleDate));
// Nom du jour en toutes lettres :
switch ($NomJour)
{
case "Mon": $NomJour = "Lundi";
break;
case "Tue": $NomJour = "Mardi";
break;
case "Wed": $NomJour = "Mercredi";
break;
case "Thu": $NomJour = "Jeudi";
break;
case "Fri": $NomJour = "Vendredi";
break;
case "Sat": $NomJour = "Samedi";
break;
case "Sun": $NomJour = "Dimanche";
break;
}
// Nom du mois en toutes lettres :
switch ($NomMois)
{
case "Jan": $NomMois = "Janvier";
break;
case "Feb": $NomMois = "Février";
break;
case "Mar": $NomMois = "Mars"; break;
case "Apr": $NomMois = "Avril";
break;
case "May": $NomMois = "Mai"; break;
case "Jun": $NomMois = "Juin"; break;
case "Jul": $NomMois = "Juillet";
break;
case "Aug": $NomMois = "Août";
break;
case "Sep": $NomMois = "Septembre";
break;
case "Oct": $NomMois = "Octobre";
break;
case "Nov": $NomMois = "Novembre";
break;
case "Dec": $NomMois = "Décembre";
break;
}
return $NomJour."
".$Jour." ".$NomMois." ".$Annee;
}