Cours ⇒ Cour PHP facebook twitter youtube

News

Supprimer les logiciels espions et malveillants de son ordinateur


Supprimer les logiciels espions et malveillants de son ordinateur

Ill arrive que des logiciels espions (spywares), malveillants (malwares) ou publicitaires (adwares) arrivent à pénétrer votre système. Les conséquences ? Des pop-up publicitaires qui s’affichent aléatoirement, des programmes qui lisent le contenu de votre ...

2015-08-13

Les nouveautés de Windows 10


Les nouveautés de Windows 10

Windows 10 qui sera proposé sur un ensemble d’appareils (smartphones, tablettes, ordinateurs). Le lancement est prévu pour cette année. ...

2015-02-16

Les différent virus


Les différent virus

Les différent virus informatique ...

2015-02-04


Foire aux questions

Dates et calendriers | Dates et calendriers


Les fonctions de date de PHP permettent d’afficher le jour, la date et l’heure sur les pages Web, qu’elles soient statiques ou créées dynamiquement.
La gestion du temps se révèle non moins utile pour déterminer la durée de validité des cookies, stocker dans une base de données des informations de date de commande ou calculer un délai.

La fonction time()

que vous utiliserez souvent par la suite, retourne le timestamp de
l'instant présent. Cette valeur n'est pas affichée au visiteur du site

Exemple . La fonction time()

 

<?php
         echo "A cet instant précis le timestamp est : ", time(),"<br />"; 
         echo "Dans 23 jours le timestamp sera : ", time()+23*24*3600, "<br />"; 
         echo "Il y a 12 jours le timestamp était : ", time()-12*24*3600,"<br />";
         echo"Nombre d'heures depuis le 1/1/1970 = ",round(time()/ 3600),"<br />"; 
         echo"Nombre de jours depuis le 1/1/1970 = ",round(time()/3600/ 24),"<br />"; 
         ?>

AFFICHE:A cet instant précis le timestamp est : 1343518971
Dans 23 jours le timestamp sera : 1345506171
Il y a 12 jours le timestamp était : 1342482171
Nombre d'heures depuis le 1/1/1970 = 373200
Nombre de jours depuis le 1/1/1970 = 15550

La fonction microtime()

fournit également le nombre de secondes et de microsecondes
de l'instant en cours, mais en retournant non pas un nombre décimal mais une chaîne de
caractères commençant par le nombre de microsecondes suivi du nombre de secondes.
Cela est dû au manque de précision des nombres décimaux de type double, qui nepermettent pas d'afficher suffisamment de chiffres significatifs. Il faut donc extraire les
renseignements utiles de la chaîne à l'aide de la fonction substr(), qui découpe la chaîne
en deux sous-chaînes.

Exemple Calcul de durée en microseconde

<?php
         //La fonction microtime()
         $temps = microtime();
         echo "Chaîne microtime = ", $temps,"<br />";
         //Lecture du nombre de microsecondes
         $microsec= (integer)substr($temps,2,6); 
         //Lecture du nombre de secondes
         $sec = substr($temps,11,10); 
         echo "À la microseconde près le timestamp est : $sec.$microsec secondes<br />";
         echo "Le nombre de microseconde est: $microsec μs<br />";
         echo "Le nombre de seconde est: $sec secondes<br />";
         $x=0;
         //Boucle pour perdre du temps
         for($i=0;$i<200000;$i++) 
         {$x+=$i;}
         //Temps final
         $tempsfin=microtime();
         $microsecfin = substr($tempsfin,2,6);
         $duree=$microsecfin-$microsec;
         $duree=($duree>0) ? ($duree):(1000000+$duree);
         echo "Temps d'exécution du script=", $duree," microsecondes";
         ?>

Chaîne microtime = 0.71516400 1343519243
À la microseconde près le timestamp est : 1343519243.715164 secondes
Le nombre de microseconde est: 715164 μs
Le nombre de seconde est: 1343519243 secondes
Temps d'exécution du script=171491 microsecondes


Définir une date

La fonction time() ne donne que le timestamp de l'instant en cours et se montre inadaptée
pour créer des dates déterminées antérieures ou postérieures. Pour cela, il faut avoir
recours à la fonction

mktime(),

dont la syntaxe est la suivante :

int mktime(int heure, int minute, int seconde, int mois, int jour, int année,int été)

Pour gérer des dates GMT, vous disposez de la fonction

gmmktime()

dont la syntaxe est la
suivante :

   int gmmktime(int heure, int minute, int seconde, int mois, int jour, int année,int été)

 

Exemple . Définition de dates et calcul de durées

<?php
         //la fonction mktime()
         $timepasse= mktime(12,5,30,5,30,1969); 
         $timeaujour = time();
         $duree = $timeaujour-$timepasse; 
         echo "Entre le 30/05/1969 à 12h05m30s et maintenant il s'est écoulé",$duree," secondes <br />";
         echo "Soit ",round($duree/3600), " heures <br />";
         echo "Ou encore ",round($duree/3600/24)," jours <br />";
         $timefutur = mktime(12,5,30,12,25,2008);
         $noel = $timefutur-$timeaujour; 
         echo "Plus que ",$noel, "secondes entre   maintenant et Noël, soit ",round($noel/3600/24)," jours, Patience!   <br />"; 
         //la fonction gmmktime()
         $timepassegmt = gmmktime(12,5,30,5,30,1969);
         echo "Timestamp serveur pour le 30/5/1969= ",$timepasse,"<br />";
         echo "Timestamp GMT pour le 30/5/1969= ",$timepassegmt,"<br />";
         echo "Décalage horaire = ",$timepasse-$timepassegmt," secondes<br />"; ←
         ?>

L'exemple retourne le résultat suivant sur un serveur Linux :
Entre le 30/05/1969 à 12h05m30s et maintenant il s'est écoulé 1243146454 secondes
Soit 345318 heures
Ou encore 14388 jours
Plus que 5679146secondes entre maintenant et Noël, soit 66 jours, Patience!
Timestamp serveur pour le 30/5/1969= –18622470
Timestamp GMT pour le 30/5/1969= –18618870
Décalage horaire = –3600 secondes


Vérifier une date

Dans un formulaire complété par un visiteur, il n'est pas rare que celui-ci indique une
date, ne serait-ce que sa date de naissance. Même si une expression régulière peut vous
permettre de vérifier si la saisie répond à un format imposé, par exemple JJ/MM/AAAA,
elle ne peut vérifier si la date indiquée existe ou si le nombre des jours et celui des mois
sont inversésIl peut être opportun dans de tels cas d'utiliser la fonction checkdate(), dont la syntaxe est
la suivante :
boolean checkdate(int mois, int jour, int année)

La fonction checkdate()

retourne une valeur booléenne TRUE si la date existe et FALSE dans
le cas contraire.

Exemple Formulaire de vérification de date

<body>
         <form method="post" action="<?= $_SERVER["PHP_SELF"] ?>" >
         <fieldset>
         <legend>Entrez votre date de naissance sous la forme JJ/MM/AAAA</legend>
         <input type="text" name="date" />
         <input type="submit" value="Envoi"/>
         </fieldset>
         </form>
         <?php
         //checkdate
         if(isset($_POST["date"]))
         {
         $date=$_POST["date"];
         $tabdate=explode("/",$date);
         if(!checkdate($tabdate[1],$tabdate[0],$tabdate[2]) ) {echo "<hr   />La date $date n'est pas valide. Recommencez! <hr />";}
         else {echo "<h3> La date $date est valide. Merci!</h3>";}
         }
         ?>
         </body>

Afficher une date en clair

La fonction date()

permet d'afficher une date selon des paramètres plus lisibles qu'un
timestamp UNIX. Sa syntaxe est la suivante :
string date(string format_de_date,[int timestamp])

Pour afficher un des caractères spéciaux du tableau 8-1 indépendamment de sa fonction
de formatage, il faut le faire précéder d'un antislash. Par exemple, \h affiche le caractère
« h » et non le nombre d'heure. Pour afficher les caractères « n » et « t », il faut écrire \\n
et \\t car \n et \t sont employés pour le saut de ligne et la tabulation.
Par exemple, pour obtenir l'affichage

calendrier

calendrier

La fonction date() permet de récupérer des informations numériques individuelles en
n'utilisant qu'un seul caractère dans la chaîne de formatage.
Par exemple :
$numjour = date("w");
récupère le numéro du jour de la semaine, de 0 pour dimanche à 6 pour samedi ;
$nummois=date("n");
récupère le numéro du mois de 1 à 12 ;
$bissext=date("L");
récupère la valeur 1 si l'année est bissextile et 0 dans le cas contraire.
L'exemple ci-dessous :
$bissext=(bool) date("L");
if($bissext) {echo "L'année ",date("Y")," est bissextile";}
else {echo "L'année ",date("Y")," n'est pas bissextile";}
retourne le résultat suivant :
L'année 2008 est bissextile


La fonction getdate()

Contrairement à la fonction date(), getdate() ne retourne pas une chaîne de caractères
mais un tableau contenant toutes les informations de date.
Sa syntaxe est la suivante :
array getdate([int timestamp])
Si le paramètre timestamp est omis, la fonction getdate() retourne les informations sur la
date en cours.
Le tableau retourné est un tableau associatif, dont les clés sont fournies au tableau 8-2.

La récupération des informations se fait en deux temps, l'appel de la fonction getdate()
puis la lecture des éléments du tableau retourné.
L'exemple ci-dessous :
$jour = getdate();
echo "Aujourd'hui {$jour["weekday"]} {$jour["mday"]} {$jour["month"]}
➥{$jour["year"]}";
affiche le résultat suivant :
Aujourd'hui Monday 20 October 2008


Afficher la date en français

les fonctions getdate() et date() affichent les noms des
jours et des mois en anglais. Une première manière d'obtenir un affichage en français
consiste à utiliser ces fonctions d'une manière détournée.
Vous créez pour cela deux tableaux indicés, $semaine et $mois, destinés à contenir respectivement
les noms des jours et des mois en français. Pour un site multilingue, vous
pouvez créer autant de tableaux que de langues désirées. Il vous suffit ensuite de récupérer
les données numériques du jour de la semaine, avec date("j") ou $tab["wday"] si
$tab=getdate(), puis du numéro de mois, avec date("n") ou $tab["mon"], qui vous serviront
d'indice pour lire le jour et le mois à partir des tableaux $semaine et $mois.

Exemple . Affichage d'une date en français avec date() et getdate

<?php                            //Date en français
         $jour = getdate();
         echo "Anglais: Aujourd'hui   {$jour["weekday"]} {$jour["mday"]}{$jour["month"]}{$jour["year"]} <br   />";
         $semaine = array(" dimanche "," lundi "," mardi "," mercredi "," jeudi "," vendredi "," samedi ");
         $mois =array(1=>" janvier "," février ","   mars "," avril "," mai "," juin "," juillet "," août "," septembre ","   octobre "," novembre "," décembre ");
         //Avec getdate()
         echo "Français: Avec getdate() : Aujourd'hui   ",$semaine[$jour['wday']] ,$jour['mday'], $mois[$jour['mon']],   $jour['year'],"<br />"; 
         //Avec date()
         echo " Français: Avec date() : Aujourd'hui   ", $semaine[date('w')] ," ",date('j')," ", $mois[date('n')],   date('Y'),"<br />";
         ?>

Anglais: Aujourd'hui Friday 3August2012
Français: Avec getdate() : Aujourd'hui vendredi 3 août 2012
Français: Avec date() : Aujourd'hui vendredi 3 août 2012

Exemple 8-6. Création d'une fonction de date en français

<?php
         //*************************************************
         //Définition d'une fonction d'affichage en français
         //*************************************************
         function datefr($njour=0)
         {
         $timestamp=time() + $njour*24*3600;
         $semaine = array(" dimanche "," lundi "," mardi "," mercredi "," jeudi "," vendredi "," samedi ");
         $mois =array(1=>" janvier "," février ","   mars "," avril "," mai "," juin "," juillet "," août "," septembre ","   octobre "," novembre "," décembre ");
         $chdate= $semaine[date('w',$timestamp)] ." ".date('j',$timestamp)." ".$mois[date('n',$timestamp)];
         return $chdate;
         }
         ?>

Vous pouvez utiliser cette fonction dans n'importe quel script en l'incluant avec include().
Par exemple, le code suivant :

<?php
         include("date8.6.php");
         echo "Aujourd'hui :",datefr(),"<br />";
         echo "Dans 12 jours : ",datefr(45),"<br />";
         ?>

Aujourd'hui : vendredi 3 août
Dans 12 jours : lundi 17 septembre


Les fonctions de calendrier

la fonction

easter_date(), 

qui
retourne le timestamp du jour de Pâques de l'année passée en paramètre et dont la
syntaxe est la suivante :
int easter_date(int année)

Cette fonction permet de fabriquer un calendrier complet pour une année donnée, les
autres fêtes religieuses des mois suivants étant calculées par rapport à la date de Pâques,
ou encore de prévoir vos week-ends des années futures.
En écrivant, par exemple :
echo "Pâques 2009 sera le : ",date( "d F Y", easter_date(2009));

Exemple. Recherche d'un jour de semaine antérieur à 1970

<!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>Quel jour c'était?</title>
         </head>
         <body>
         <h1> Quel jour c'était? </h1>
         <form method="post" action="<?= $_SERVER["PHP_SELF"] ?>" >
         <fieldset>
         <legend>Quel jour c'était? </legend>
         Jour&nbsp;&nbsp;&nbsp;<input type="text" name="jour" /><br> 
         Mois&nbsp;&nbsp;<input type="text" name="mois" /><br> 
         Année<input type="text" name="an" /><br>
         <input type="submit" name="envoi" value="Calculer"/><br>
         </fieldset>
         </form>
         <?php
         //Utiliser un formulaire de saisie de date et donner le jour de la semaine
         if(isset($_POST["envoi"]))
         {
         //Récupération des valeurs
         $jour= $_POST["jour"];
         $mois= $_POST["mois"];
         $an= $_POST["an"];
         //Transformation Grégorien/Julien
         $jd = gregoriantojd($mois,$jour,$an);
         //Traduction en français
         $semaine = array("Sunday"=>" dimanche   ","Monday"=>" lundi ","Tuesday"=>" mardi ","Wednesday"=>"   mercredi ","Thursday"=>" jeudi ","Friday"=>" vendredi   ","Saturday"=>" samedi "); 
         //Affichage du résultat
         echo "<h2>Le $jour/$mois/$an était un ",$semaine[jddayofweek($jd,1)],"</h2>";
         }
         ?>
         </body>
         </html> <!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>Quel jour c'était?</title>
         </head>
         <body>
         <h1> Quel jour c'était? </h1>
         <form method="post" action="<?= $_SERVER["PHP_SELF"] ?>" >
         <fieldset>
         <legend>Quel jour c'était? </legend>
         Jour&nbsp;&nbsp;&nbsp;<input type="text" name="jour" /><br> 
         Mois&nbsp;&nbsp;<input type="text" name="mois" /><br> 
         Année<input type="text" name="an" /><br>
         <input type="submit" name="envoi" value="Calculer"/><br>
         </fieldset>
         </form>
         <?php
         //Utiliser un formulaire de saisie de date et donner le jour de la semaine
         if(isset($_POST["envoi"]))
         {
         //Récupération des valeurs
         $jour= $_POST["jour"];
         $mois= $_POST["mois"];
         $an= $_POST["an"];
         //Transformation Grégorien/Julien
         $jd = gregoriantojd($mois,$jour,$an);
         //Traduction en français
         $semaine = array("Sunday"=>" dimanche   ","Monday"=>" lundi ","Tuesday"=>" mardi ","Wednesday"=>"   mercredi ","Thursday"=>" jeudi ","Friday"=>" vendredi   ","Saturday"=>" samedi "); 
         //Affichage du résultat
         echo "<h2>Le $jour/$mois/$an était un ",$semaine[jddayofweek($jd,1)],"</h2>";
         }
         ?>
         </body>
         </html> 

Mémo des fonctions

 bool checkdate (int mois, int jour, int annee)

   Vérifie la validité de la date définie à l'aide des paramètres mois, jour, annee.

   string date(string format, int timestamp)

   Retourne en clair la date composée des informations   indiquées dans la chaîne de formatage (voir le tableau 8-1).

   array getdate(int timestamp)

   Retourne un tableau associatif contenant toute   information de date correspondant au timestamp (voir le tableau 8-2).

   array gettimeofday()


Retourne un tableau associatif dont les clés sont sec, usec, minuteswest et dsttime correspondant respectivement au
nombre de secondes et de microsecondes et au décalage horaire par rapport à l'heure GMT. L'élément de clé dsttime
vaut 1 pour l'heure d'hiver et 0 en été. Les valeurs sont celles du serveur.


   string gmdate(string format, int timestamp)


Identique à la fonction date() mais avec des données GMT
int gmmktime(int heure,int minute,int seconde, int mois, int jour, int annee, int hiver)
Retourne le timestamp GMT correspondant à l'instant défini par les paramètres. L'entier hiver vaut 1 pour l'heure d'hiver
et 0 sinon.


   string Gmstrftime(string format, int timesatmp)

   Identique à strftime() mais en heure GMT

   string microtime()


Retourne une chaîne composée du nombre de microsecondes suivi d'une espace puis du nombre de secondes de
l'instant présent.


   int mktime(int heure,int minute,int seconde, int mois, int jour, int annee, int hiver)


Retourne le timestamp (en heure locale du serveur) correspondant à l'instant défini par les paramètres. L'entier hiver
vaut 1 pour l'heure d'hiver et 0 sinon.


   string Strftime(string format, int timestamp)


Retourne un tableau associatif contenant toutes les informations de date correspondant au timestamp (voir le tableau 8-3).


   int time()


Retourne le timestamp de l'instant en cours sur le serveur.





>
Changer le fond
Oregionale Skin
7astuces
Sélectionnez un Fond (11)
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces
Fond de contenu
7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces 7astuces