Le logo de PHP 5  PHP 5 Cours et exercices  2e Edition La couverture du livre PHP 5

Jean ENGELS       Editions Eyrolles

Chapitre 8: Dates et calendriers

Exercice 1

Après avoir consulté le résultat affiché par l’exemple 8-1,déterminer la date et l’heure de l’exécution de ce script. Le timestamp en question vaut 1251364995 .

<?php
echo date("\L\e d / M / Y à H:m:s",1098480456);
?>
Le résultat affiché est : « Le 27 / Aug / 2009 à 11:08:15»
Notez l’utilisation du caractère d’échappement pour afficher normalement les lettres "L" et "e".
Voir le résultat

Exercice 2

Calculez votre age à l’instant actuel à la seconde près. Le script suivant ne fonctionne pas en local sous Windows et affiche le message suivant : «Warning: mktime() [function.mktime]: Windows does not support negative values for this function in c:\wamp\www\php5\C8dates\ch8exo2.php on line2 ».
En effet Windows n’accepte pas les timestamps négatifs et dans l’exemple la date de naissance est antérieure à 1970. En revanche, sur un serveur externe sous Linux, le script fonctionne.

<?php
$datenaiss= mktime(9,15,45,1,21,1962);
$aujourdhui=time();
$age=$aujourdhui - $datenaiss;
echo "Mon age est de $age secondes";
?>

On obtient par exemple : Mon age est de 1502970188 secondes
Voir le résultat

Exercice 3

Vérifiez si la date du 29 Février 1962 a existé.

<?php
if(checkdate(2,29,1962)) {echo "Date valide";}
else{echo "Date non valide";}
?>
Le résultat est : « Date non valide »
Voir le résultat

Exercice 4

Quel jour de la semaine était le 3 mars 1993 ? Affichez le résultat en français.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Afficher le jour de la semaine en français
</head>
<body>
<?php
//Date en français
$jour = mktime(0,0,0,3,3,1993);
$semaine = array(" dimanche "," lundi "," mardi "," mercredi "," jeudi "," vendredi "," samedi ");
$num=date('w',$jour);
echo "<h2>Le ",date("d M Y ",$jour)," était un ", $semaine[$num],  "</h2>";
?>
</body>
</html>
Le résultat est : Le 03 Mars 1993 était un mercredi
Voir le résultat

Exercice 5

Affichez toutes les années bissextiles comprises entre 2005 et 2052.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Afficher les années bissextiles 
</head>
<body>
<?php
for($i=2005;$i<=2052;$i++)
{
$date=mktime(0,0,0,1,1,$i);
if(date("L",$date)==1) {echo "L'année $i est bissextile
";} } ?> </body> </html>
Les résultats affichés sont :
L'année 2008 est bissextile
L'année 2012 est bissextile
L'année 2016 est bissextile
L'année 2020 est bissextile
L'année 2024 est bissextile
L'année 2028 est bissextile
L'année 2032 est bissextile
L'année 2036 est bissextile
L'intervalle de validité d'un timestamp va généralement du Vendredi 13 Décembre 1901 20:45:54 GMT au Mardi 19 Janvier 2038 03:14:07 GMT. Donc les résultats affichés s’arrêtent à 2036.
En local des alertes sont affichées pour les années postérieures à 2038.
Voir le résultat

Exercice 6

Déterminez quel jour de la semaine seront tous les premier Mai des années comprises entre 2010 et 2018. Si le jour est un samedi ou un dimanche, affichez le message « Désolé !». Si le jour est un vendredi ou un lundi affichez « Week end prolongé !».

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Afficher jours de 1er mai </title>
</head>
<body>
<p>
<?php
for($i=2010;$i<=2018;$i++)
{
$date=mktime(0,0,0,5,1,$i);
if(date("w",$date)==6 OR date("w",$date)==0 ) {echo "1<sup>er</sup> Mai $i : Désolé<br />";}
elseif(date("w",$date)==5 OR date("w",$date)==1 ) {echo "1<sup>er</sup> Mai $i : Week end prolongé<br />";}
}
?>
</p>
</body>
</html>
Les résultats affichés sont :
1er Mai 2010 : Désolé
1er Mai 2011 : Désolé
1er Mai 2015 : Week end prolongé
1er Mai 2016 : Désolé
1er Mai 2017 : Week end prolongé
Voir le résultat

Exercice 7

L’Ascension est le quarantième jour après Pâques (Pâques compris dans les 40 jours). Calculez les dates de l’Ascension pour les années 2010 à 2015.

<?php
for($i=2010;$i<2016;$i++)
{
echo "Jour de Paques : ",date("d M Y ",easter_date($i)),"<br />";
echo "Jour de l'Ascension ",date("d M Y
",easter_date($i)+39*86400),"<br />";
}
?>
Les résultats obtenus sont les suivants :
Jour de Paques : 04 Apr 2010
Jour de l'Ascension 13 May 2010
Jour de Paques : 24 Apr 2011
Jour de l'Ascension 02 Jun 2011
Jour de Paques : 08 Apr 2012
Jour de l'Ascension 17 May 2012
Jour de Paques : 31 Mar 2013
Jour de l'Ascension 09 May 2013
Jour de Paques : 20 Apr 2014
Jour de l'Ascension 29 May 2014
Jour de Paques : 05 Apr 2015
Jour de l'Ascension 14 May 2015
Voir le résultat