Les dates en PHP
Sommaire
- 1- Objectifs
- 2- Présentation
- 3- Le timestamp
- 3.1- Définitions
- 3.2- Obtenir un timestamp
- 3.3- Conversion de timestamp à l'aide de la fonction getdate ():
- 4- La fonction
date()
- 5- La fonction
time()
- 6- La fonction
mktime()
- 7- La fonction
checkdate()
- 8- La fonction
getdate()
- 9- Applications
- 9.1- App01
- 9.2- App02
- 9.3- App03
- 9.3.1- Sommaire du cours PHP
Les dates en PHP
-
Objectifs
- Etre capable de manipuler les dates avec PHP
-
Présentation
- Les fonctions de date de PHP permettent d’afficher le jour, la date et l’heure sur les pages web.
- Les informaticiens ont défini une date de base arbitraire, correspondant au 1er janvier 1970 00 h 00 m 00 s. À partir de cette date, le temps est compté en secondes.
- Ce nombre de secondes est nommé timestamp, ou instant Unix.
- Ce nombre de secondes depuis l’heure UNIX s’appelle également le « timestamp« . Ce terme apparaîtra à plusieurs reprises dans le tutoriel.
- Pour afficher le timestamp de l’instant présent on utilise la fonction time().
-
Le timestamp
-
Définitions
- Le timestamp désigne le nombre de secondes écoulées depuis le 1er janvier 1970 à minuit UTC précise.
- Le timestamp est universel, puisque pas de notion de fuseaux horaire
- Le timestamp est alors passé à d’autres fonctions, qui réalisent l’affichage en clair de la date désirée.
- Ce système est utilisé par UNIX et par de nombreux langages de programmation (PHP, JavaScript…) pour gérer les dates (stocker la date de création / modification des fichiers, calculer une différence entre deux dates…).
- Ce timestamp est exprimé en secondes (ce qui est le cas en PHP). Mais dans certains langages comme JavaScript, il est exprimé en millisecondes (une simple division par 1000 permet de l’avoir en seconde)
-
Obtenir un timestamp
- Pour obtenir le
timestamp
actuel, il vous suffit d’utiliser la fonction time(). - La fonction
time()
ne prend aucun argument et retourne la date courante en secondes depuis le 1er janvier 1970. -
Conversion de timestamp à l’aide de la fonction getdate ():
- La fonction
getdate()
retourne un tableau contenant toutes les informations de date. - Syntaxe:
- array getdate(
[int timestamp]
) - Si le paramètre
timestamp
est omis, la fonctiongetdate()
retourne les informations sur la date en cours. - La table donnée ci-dessous contient les éléments présents dans le tableau renvoyé par la fonction getdate ().
-
La fonction
date()
- Pour afficher la date de l’heure de façon très simple, nous pouvons utiliser une fonction de base de PHP :
date
. Cette fonction comprend deux paramètres : le format (obligatoire) et le timestamp (facultatif). - Le timestamp (facultatif) C’est un entier qui sert à indiquer la date et l’heure pour lesquelles on souhaite retourner les informations décrites par le format. Ce paramètre est facultatif. S’il n’est pas spécifié alors la fonction date() retournera les informations relatives à la date courante.
- Par exemple, la lettre « H » indique l’heure au format 24h. Voici les caractères les plus utilisés, triés par données à afficher (les exemples se baseront sur le jeudi 19 janvier 2023 à 08h00) :
- Année :
Y
les 4 chiffres (ex: 2023) ;y
les deux 2 derniers chiffres (ex: 23) ;L
pour savoir s’il s’agit d’une année bissextile (ex: 0).- Mois :
m
le numéro avec le zéro initial (ex: 04) ;n
le numéro sans le 0 initial (ex: 4) ;M
les trois premières lettres du mois en anglais (ex: Jun) ;F
mois anglais en toutes lettres (ex: Junary) ;L
nombre de jours dans le mois (ex: 31).- Jour :
d
numéro avec le zéro initial (ex: 19) ;j
numéro sans le zéro initial (ex: 19) ;N
numéro du jour de la semaine avec 1 pour lundi (ex: 4)- Heure :
H
numéro format 24h avec le zéro initial (ex: 08) ;h
numéro format 12h avec le zéro initial (ex: 8) ;G
: heure au format 24h sans zéro initial comprise entre 0 et 23g
: heure au format 12h sans zéro initial comprise entre 1 et 12- Minutes :
i
minutes comprises entre 00 et 59, c’est un numéro avec le zéro initial (ex: 00).- Secondes :
s
secondes comprises entre 00 et 59, c’est un numéro avec le zéro initial (ex: 00).-
La fonction
time()
- La fonction
time()
calcule le timestamp Unix en secondes. Cela représente le nombre de secondes écoulées depuis le 1 janvier 1970 à minuit jusqu’à l’instant actuelle. - Cette date est prise comme référence car elle correspond à la date du lancement du premier système Unix. Certains préfèrent l’appeler Timestamp POSIX.
- Au moment où j’ai exécuté ce code j’ai eu: 1674076786
-
La fonction
mktime()
- La fonction
mktime()
renvoie l’horodatage Unix d’une date. Cet horodatage est un entier long contenant le nombre de secondes entre l’époque Unix (1er janvier 1970 00:00:00 GMT) et l’heure spécifiée. - La fonction
mktime()
renvoie le timestamp Unix pendant une date. mktime (heure, minute, seconde , mois, jour, année)
- Pour déterminer un jour à l’avenir nous additionnons simplement un mktime () à l’argument du jour :
- Exemple: déterminer la date de demain .
-
La fonction
checkdate()
- La fonction
checkdate()
permet de vérifier la validité d’une date. Si la date passée en paramètre est valide alors elle retourne true, sinon elle retourne false. - La fonction checkdate vérifie que trois entiers représentant le jour, le mois et l’année correspondent à une date valide.
- Syntaxe:
booléen checkdate(entier mois, entier jour, entier année)
- Avec mois: Numéro du mois (1 à 12), jour: Numéro du jour (1 à 31) et année: Année (1 à 32767).
- checkdate retourne TRUE si la date construite avec les trois composantes est valide et FALSE dans le cas contraire. Cette fonction tient compte des années bissextiles.
-
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.
- La fonction
getdate()
renvoie les informations de date/heure d’un horodatage ou la date/heure locale actuelle. - 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. - Valeurs de retour
- [seconds] – secondes
- [minutes] – minutes
- [hours] – heures
- [mday] – jour du mois
- [wday] – jour de la semaine
- [mon] – mois
- [year] – année
- [yday] – jour de l’année
- [weekday] – nom du jour de la semaine
- [month] – nom du mois
- [0] – secondes depuis Unix Epoch
- Exemple 01
print_r(getdate());
- Exemple 02
print_r(getdate());
-
Applications
-
App01
- Réaliser le formulaire suivant pour récupérer le jour de votre naissance.
- Vous pouvez télécharger le fichier css d’ici
-
App02
- 1- Affichez toutes les années bissextiles comprises entre 2005 et 2052.
- 2- Écrivez un script PHP pour afficher la date actuelle au format suivant.
-
Exemple de format : (en supposant que la date actuelle est le 01 septembre 2013)
2013/09/01
13.09.01
01-09-13 - 3- Écrivez un script PHP pour convertir une date de aaaa-mm-jj en jj-mm-aaaa. Aller à l’éditeur
-
Date de l’échantillon : 2023-01-19
Résultat attendu : 19-01-2023 - 4-Écrivez un script PHP pour calculer un nombre de jours entre deux dates.
- 5-Selon l’heure de la journée le visiteur aura un message d’accueil personnalisé (bonjour, bon appétit, bon après-midi, bonne nuit).
- Créez un simple script de « compte à rebours d’anniversaire », le script comptera le nombre de jours entre le jour actuel et l’anniversaire.
<?php
echo time(); // Affichera 1567111345
?>
$info=getdate();
foreach($info as $key=>$value)
{
echo $key." = ".$value."<br>";
}
/*seconds = 8
minutes = 14
hours = 23
mday = 29
wday = 4
mon = 8
year = 2019
yday = 240
weekday = Thursday
month = August
*/
Clé | La description | Exemple |
---|---|---|
seconds | Quelques secondes après les minutes (0-59) | 20 |
minutes | Minutes après l’heure (0-59) | 29 |
hours | Heures de la journée (0-23) | 22 |
mday | Jour du mois (1-31) | 11 |
wday | Jour de la semaine (0-6) | 4 |
mon | Mois de l’année (1-12) | 7 |
year | Année (4 chiffres) | 1988 |
yday | Jour de l’année (0-365) | 19 |
weekday | Jour de la semaine | Jeudi |
month | Mois de l’année | janvier |
0 | Horodatage | 944584562 |
Exemple:
<?php
$jour= date('d') ;
echo 'Aujourd\'hui, nous sommes le : '. $jour;
?>
Exemple:
echo time();
-
Syntaxe pour le mktime()
<?php
$demain = mktime(0,0,0,date("m"),date("d")+1,date("Y"));
echo "demainsera le : " .date ("d/m/Y", $demain) ;
?>
<?php
$jour = 26; $mois = 8 ; $année = 1966;
echo "$jour/$mois/$année => ",
var_dump(checkdate($mois,$jour,$année)),'<br />’;
$jour = 29; $mois = 2 ; $année = 2000;
echo "$jour/$mois/$année => ",
var_dump(checkdate($mois,$jour,$année)),'<br />’;
$jour = 29; $mois = 2 ; $année = 2001;
echo "$jour/$mois/$année => ",
var_dump(checkdate($mois,$jour,$année)),'<br />’;
?>
-
Array ( [seconds] => 20 [minutes] => 16 [hours] => 20 [mday] => 18 [wday] => 3 [mon] => 1 [year] => 2023 [yday] => 17 [weekday] => Wednesday [month] => January [0] => 1674072980 )
<?php
$today=getdate();
echo "Le jour du mois = ". $today['mday'] . "<br>";
echo "Jour de la semaine = ". $today['wday'] . "<br>";
echo "Jour de l'année = ". $today['yday'] . "<br>";
echo "Mois de l'année en chiffres = ". $today['mon'] . "<br>";
echo "Mois de l'année = ". $today['month'] . "<br>";
echo "L\'année est = ". $today['year'] . "<br>";
echo "Heures est = ". $today['hours'] . "<br>";
echo "Minutes est = ". $today['minutes'] . "<br>";
echo "Les secondes sont = ". $today['seconds'] . "<br>";
echo "Le jour de la semaine est = ". $today['weekday'] . "<br>";
echo "L'horodatage est = ". $today['0'] . "<br>";
?>
Le jour du mois = 18
Jour de la semaine = 3
Jour de l’année = 17
Mois de l’année en chiffres = 1
Mois de l’année = January
L\’année est = 2023
Heures est = 20
Minutes est = 37
Les secondes sont = 49
Le jour de la semaine est = Wednesday
L’horodatage est = 1674074269
Jour de la semaine = 3
Jour de l’année = 17
Mois de l’année en chiffres = 1
Mois de l’année = January
L\’année est = 2023
Heures est = 20
Minutes est = 37
Les secondes sont = 49
Le jour de la semaine est = Wednesday
L’horodatage est = 1674074269
Solution
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="style.css">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<title>Exercice 1</title>
</head>
<body>
<fieldset style="width: 40%;" class="scheduler-border">
<?php
if (isset($_POST['valider'])) {
if((!empty($_POST['jour']))
&& (!empty($_POST['mois']))
&& (!empty($_POST['an']))
){
$jour=$_POST['jour'];
$mois=$_POST['mois'];
$annee=$_POST['an'];
// on saisie sa date de naissance, on va calculer le jour qu'il était.// On calcule le timestamp correspondant à la date saisie
$timestamp_naissance = mktime(0, 0, 0, $mois, $jour, $annee);
// On récupère le numéro du jour correspondant au timestamp (0, 1, 2, 3...)
$numero_jour = date('w', $timestamp_naissance);
// On utilise l’array pour numéroter les jours (0 => Dimanche, 1 => Lundi...)
$jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
// On récupère le nom du jour en français grâce à l'array qu'on vient de créer
$jour_naissance = $jours[$numero_jour];
// Puis on affiche le résultat>
echo '<div class="rappel"><b>Bonjour !: Vous êtes né un ' . $jour_naissance . '</div>';
}else{
// Sinon, c'est que le visiteur n'a pas encore saisie sa date de naissance, on affiche le formulaire
}
}
?>
<h5>Indiquez votre date de naissance (jj/mm/aaaa) :</h5>
<form method="POST" action="naissance.php">
<div class="row">
<div class="form-group mx-auto col-lg-4">
<label for="jour">Jour</label>
<input class="form-control" type="number" name="jour" >
</div>
<div class="form-group mx-auto col-lg-4">
<label for="mois">Mois</label>
<input class="form-control" type="number" name="mois" />
</div>
<div class="form-group mx-auto col-lg-4">
<label for="an">An</label>
<input class="form-control" type="number" name="an" >
</div>
</div>
<div class="row pt-2">
<div class="d-grid gap-2 col-lg-6">
<input class="btn btn-danger" type="reset" value="Effacer"/>
</div>
<div class="d-grid gap-2 col-lg-6">
<input class="btn btn-primary" type="submit" name="valider" value="Calculez votre âge"/>
</div>
</div>
</form>
</fieldset>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
</body>
</html>
App03
- Références:
- https://www.php.net
- Livre PHP7 Cours et exercices Jean Engels 2e édition
- Technologies de l’Information et de la Communication 4 année secondaire