Exercices
Questions à choix multiple

Leçon N° 10 : Dates

La date du jour getdate()
Le timestamp
La fonction date()
Fonction microtime
Autres fonctions
Une classe calendrier
Notes de page

L'heure et la date du jour

La façon la plus simple et la chose la plus basique que l'on puisse faire avec les fonctions relatives aux dates de PHP est le fait d'obtenir la date et l'heure du moment.
La fonction getdate(), retourne un tableau associatif à deux colonnes (clé et valeur) contenant les information date et heure fournies par le système d'exploitation
Un exemple:
<?
// mettre les informations date/heure dans un tableau :
$current = getdate();
// les imprimer :
print_r($current);
?>
La sortie va être quelque chose comme (si l'on était le mercredi 20 février 2002 à 9 heures 19 minutes 7 secondes)
Array
(
    [seconds] => 7
    [minutes] => 19
    [hours] => 9
    [mday] => 20
    [wday] => 3
    [mon] => 2
    [year] => 2002
    [yday] => 50
    [weekday] => Wednesday
    [month] => February
    [0] => 1014176947
)
Description des valeurs obtenues avec la fonction getdate()
Déscription en françaisValeur de la clef en anglaisExemple de valeur>
Les secondesseconds7
Les minutesminutes19
Les heureshours9
Le N° du jour dans le moismday20
Le N° du jour dans la semaine
Dimanche=0
wday3
Le N° du mois dans l'annéemon2
L'annéeyear2002
Le N° de semaine dans l'annéyday50
Le jour de la semaine en anglaisweekdayWednesday
Le mois en anglaismonthFebruary
Timestamp01014176947
Ces informations peuvent être aisément manipulées, par exemple :
Construire une phrase contenant la date
Nom du fichier : exercises_10/lesson_10_a_build_a_date_string.php

Le timestamp

Les différents langages et systèmes d'exploitation informatiques ont leur propre façon de coder la représentation de l'heure et de la date.
D'une façon générale, un "timestamp" (tampon de temps) est un ensemble de caractères représentant une date, d'une façon plus ou moins codée.
Par exemple : Le timestamp pour le 1/1/2003 0:5:10 est : 1041375910
PHP (mais non pas mysql) a repris le timestamp de UNIX
La plupart des fonctions de date travaillent sur la base de ce timestamp
D'une façon générale, le but du timestamp et de pouvoir facilement faire des opérations sur les dates : soustraction pour trouver l'âge d'une personne (date en cours moins date de naissance), la durée d'un évènement...
    Un timestamp PHP peut être créé à l'aide de la fonction mktime() qui accepte six paramètres dans un ordre bien défini:
  1. l'heure
  2. la minute
  3. la seconde
  4. le mois
  5. le jour
  6. l'année
Remarque 1: Si l’on ne met aucun paramètre à la fonction mktime(), on obtient le timestamp actuel (le jour en cours, et à l’heure ou la fonction est utilisée)
Remarque 2: On peut passer d’un timestamp (suite de caractères codés) à la date correspondante à celui-ci, à l’aide de la fonction getdate : :

<?
print_r(getdate(1009218600));
?>
Utilisation de la fonction mktime
Nom du fichier : exercises_10/lesson_10_b_mktime.php
--------------------------------------------------------------------------------

La fonction date()

La fonction date() renvoie une chaîne de caractères pouvant contenir plusieurs informations de date et d’heure, ainsi que des caractères libres.
Syntaxe :
Voici une liste réduite des caractères de formatage à utiliser pour la fonction date():
(attention, il faut respecter les majuscules/minuscules)
CodeAnglais
dday of the month (numeric)Chiffre du jour (dans le mois)
Dday of the week (string)Jour de la semaine en anglais
Fmonth (string)Mois en anglais
mmonth (numeric)Chiffre du mois
YyearAnnée sur 4 chiffres
hhour (in 12-hour format)Heure 0-12
Hhour (in 24-hour format)Heure 0-24
aAM or PMAM ou PM
iminuteMinute
ssecondSeconde
Exemple 1: $maDate = date("Y",$monTimestamp);

Remarque 3 : Si vous voulez rajouter vos propres caractères, qui seront affichés tels quels, vous pouvez le faire en rajoutant un antislash devant chaque caractère : (en fait c'est seulement nécessaire pour les caractères qui ne sont pas des caractères de formatage, mais cette liste est si longue qu'il est beaucoup plus pratique de mettre systématiquement l'antislash)
Exemple 2 :

<?
echo date('\N\o\u\s\ \s\o\m\m\e\s\ \l\e\ \ d M Y\ \i\l\ \e\s\t\ h:i', mktime());
//Renvoie par exemple "Nous sommes le 20 Feb 2002 il est 12:23 "
?>
Exercices sur l'utilisation de la fonction date
Nom du fichier : exercises_10/lesson_10_c_date.php
Différence entre deux dates
Nom du fichier : exercises_10/lesson_10_j_diff_dates.php
Différence entre deux dates
Nom du fichier : exercises_10/lesson_10_j_diff_dates2a.php
La fonction strtotime(), peut être employée pour convertir une expression de langage naturel (anglaise) de date ou d'heure en timestamp.
Voici quelques exemples:

<?
echo date("d M Y", strtotime("now")); // renvoie la date en cours
echo date("d M Y", strtotime("tomorrow")); // renvoie le lendemein de la date en cours
echo date("d M Y", strtotime("next week")); // renvoie la date en cours + une semaine
echo date("h:i d M Y", strtotime("5 pm 6 days ago")); // revoie 17 heures il y a six jours
?>
Attention, en PHP5 'next ...' renvoie la date en cours + deux ... (Ex. :il faut mettre 'week' tout seul pour avoir + une semaine) Utilisation de la fonction strtotime()
Nom du fichier : exercises_10/lesson_10_d_using_strtotime.php

Fonction microtime

Si vous avez besoin de plus de précision pour la mesure du temps, vous pouvez utiliser la fonction microtime() qui renvoie un timestamp en secondes, couplé à un composant utilisant les microsecondes.
Ces deux valeurs peuvent être ajoutées pour obtenir une valeur plus précise, mais cette fonction ne peut être utilisée que pour la mesure de l'instant en cours.
Utilisation de la fonction microtime
Nom du fichier : exercises_10/lesson_10_e_microtime_1.php
Une autre utilisation de la fonction microtime est la génération de nombres aléatoires:
Utilisation de la fonction microtime pour la génération de nombres aléatoires
Nom du fichier : exercises_10/lesson_10_f_microtime_2.php

Autres fonctions

Les fonctions localtime() et gettimeofday() renvoient des tableaux contenant des informations sur l'heure:
<?
$current = gettimeofday();
print_r($current);
?>
Ceci génère en sortie
   Array
   (
    [sec] => 1014189678
    [usec] => 900172
    [minuteswest] => -19800
    [dsttime] => 0
   )
La fonction checkdate() vous permet de vérifier si une date donnée est valide ou pas.

<?
echo checkdate(02, 31, 2002): // 31-Feb-2002 - false
?>
Cette fonction est particulièrement pratique pour vérifier les entrées saisies par un utilisateur.
Utilisation de la fonction checkdate()
Nom du fichier : exercises_10/lesson_10_i_using_checkdate.php
En cas d'opérations complexes sur les dates, les différents calendrier, consulter les nombreuses autres fonctions fournies par PHP.

Une classe calendrier

L'exemple ci-après utilise toutes les informations apprises jusqu'ici pour créer un calendrier

Utilisation de la classe calendrier
Nom du fichier : exercises_10/lesson_10_g_using_checkdate.php
Voir aussi le contenu du répertoire "fonctions_supplementaires" pour des fonctions prenant en compte des dates de l'année 100 à ...


Tous droits réservés. 2005-2008