Agitez votre trafic avec Oseox, Plus de 400 cours gratuits.
Profitez de nos meilleurs conseils, Recevez notre newsletter pro !
Afin de bien appréhender la manipulation des dates en PHP, il est bien nécessaire de comprendre ce qu'est un timestamp unix.
Appelé aussi horodatage unix, le timestamp unix représente le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit GMT. Cette date correspond au début de l'aire linux. En effet, les systèmes Unix enregistrent la date et l'heure courantes sous la forme d'un entier sur 32 bits.
Connaître le timestamp d'un moment donné va permettre de travailler avec pour obtenir toutes sortes d'informations : Vérifier la validité d'une date, classer des membres par ordre d'inscription, etc...
Pour obtenir le timestamp actuel, il vous suffit d'utiliser la fonction time(). La fonction time() est la fonction qui retourne le temps écoulé depuis ce premier janvier 1970 jusqu'à maintenant.
Exemple d'utilisation de time :
<?php
echo "Il s'est écoulé ". time() . " secondes depuis le 1er Janvier 1970";
?>
Pour convertir une date quelconque en nombre de secondes depuis le 1er Janvier 1970, on va avoir recours à la fonction mktime(). En tant que paramètre de la fonction on précise, l'heure, la minute, la seconde, le mois, le jour, l'année.
Exemple d'utilisation de mktime :
<?php
echo "Noël 2007, c'était il y a ". mktime(0,0,0,12,25,2007) . " secondes ";
?>
La fonction date() permet d'obtenir l'heure locale du serveur. Elle donne la date d'aujourd'hui. On peut lui passer comme argument des formats de date. Ainsi, elle va formater la date selon le format indiqué en argument.
Les arguments pouvant être employés sont nombreux mais en voici quelques exemples :
La fonction getdate() quant à elle, renvoie un tableau associatif contenant les différentes parties du timestamp qu'on lui passe en paramètre. Si on ne lui passe pas de paramètre, elle retourne la date d'aujourd'hui.
Les champs du tableau sont les suivants :
La fonction checkdate() nous permet de s'assurer de la validité d'une date issue par exemple d'un formulaire. Elle se révèle particulièrement utile pour vérifier les dates saisies par l'utilisateur.
Ce qui nous permet d'éviter les 31 Février, 35 Décembre et autres erreurs.
La fonction vérifie d'abord si l'année est bien un entier compris entre 0 et 32767. Ensuite, elle vérifie si le mois est un entier compris entre 1 et 12. Et enfin, si le jour existe bien dans le mois en question. Sachant que la fonction tient compte des années bissextiles.
<?php
$mois = 12;
$jour = 35;
$annee = 2001;
if (checkdate($mois, $jour, $annee)) {
echo "La date $jour/$mois/$annee est valide";
} else {
echo "La date $jour/$mois/$annee est invalide";
}
?>
Pour afficher une date, on pourra utiliser la fonction strftime avec pour paramètre une chaîne de caractères indiquant le format sous lequel vous voulez représenter la date.
<?php
echo "Affichage au format jour/mois/annee heure:minute:seconde ".
strftime("%d/%m/%y %H:%M:%S")."<br />";
?>
Il est également possible de récupérer la date à la microseconde près en utilisant la fonction gettimeofday().
Exemple d'utilisation de gettimeofday
<?php
$tableau = gettimeofday();
echo "Il s'est écoulé ".$tableau['sec']." secondes et ".
$tableau['usec']." microsecondes depuis le 1er Janvier 1970.<br />";
?>
La fonction date() permet d'obtenir une date plus classique telle que nous la connaissons. La syntaxe est date (format [, timestamp])
Exemple 1 :
<?php
echo date ("d/m/Y H:i:s", 1207742661)
?>
Exemple 2 :
<?php
echo date (" d/m/Y", str(" 2008-10-09) ; /* affichage en format ISO/US d'un format français */
?>
Exemple 3 :
<?php
setlocale(LC_TIME, 'fr, FR','fr_FR@euro','fr','FR','fra_fra','fra');
echo "nous sommes le". strftime ("%A %d %B %Y et il est %Hh%M", 1207742661); /*affiche la date dans le local actuel */
?>
Exemple 4 :
<?php
$time=mktime(date('H'),date('i',date('s'),date('m')-8,date('d')-29,date('y')-5) ;
echo date(("d/m/Y H:i:s", $time);/*calcul de la d'il y a 5 ans et 8 mois et 29 jours*/
?>
Remarques :
Une question ? Venez la poser sur notre forum développement web !