Différentes façons de comparer des dates en PHP
-
Comparez les dates avec
strtotime()
ettime()
-
Comparer les dates avec la fonction
Date()
et la vérification conditionnelle - Comparer des dates avec une fonction personnalisée
-
Comparer les dates avec l’objet PHP
Datetime
-
Comparaisons de dates multiples avec
Arsort()
etstrtotime()
![Différentes façons de comparer des dates en PHP](/img/PHP/feature-image---compare-dates-php.webp)
Cet article vous apprendra comment comparer des dates en PHP en utilisant 5 techniques différentes. Parmi ces techniques, 4 utiliseront des fonctions PHP intégrées comme strtotime()
, time()
et date()
sous une forme ou une autre. La dernière technique utilisera l’objet PHP DateTime
.
Comparez les dates avec strtotime()
et time()
Le strtotime()
est une fonction de temps intégrée à PHP. Son utilisation principale est de convertir une chaîne de dates lisibles par l’homme en un horodatage UNIX égal. Il peut analyser des variétés de chaînes et les convertir en leur horodatage approprié. Des exemples de telles chaînes sont 2 weeks ago
et next week
.
La fonction PHP time()
renvoie l’heure actuelle. Ce temps est le nombre de secondes depuis l’époque UNIX. Si vous avez besoin de convertir ces secondes à la date actuelle, vous aurez besoin de la fonction date()
intégrée de PHP.
Lorsque vous combinez ces 2 fonctions, vous pouvez comparer les dates en suivant les étapes suivantes.
Tout d’abord, vous fournissez une chaîne de date à strtotime()
. Il le convertira en son horodatage UNIX.
Soustrayez cet horodatage UNIX de l’heure actuelle à l’aide de la fonction time()
.
Vous pouvez utiliser le résultat de ce calcul et une vérification conditionnelle pour comparer les dates.
<?php
$dateString = '2021-12-12 21:00:00';
// This will check if the time
// is in the last day
if ((time() - (60 * 60 * 24)) < strtotime($dateString)) {
echo "Date in the last 24hrs";
} else {
echo "Date is <b>NOT</b> in the last 24hrs";
}
?>
Production :
Date is <b>NOT</b> in the last 24hrs
Comparer les dates avec la fonction Date()
et la vérification conditionnelle
La fonction date()
de PHP vous permet de formater un horodatage au format souhaité. L’horodatage en question représente les secondes entre l’heure actuelle et l’époque UNIX. L’époque UNIX est le temps écoulé depuis minuit le 1er janvier 1970.
La valeur de la fonction date() dépend du fuseau horaire défini dans votre fichier php.ini
.
Si vous souhaitez comparer une date donnée à l’aide de la fonction date()
, procédez comme suit.
- Convertissez l’horodatage actuel au format souhaité
- Écrivez la date que vous souhaitez comparer dans une chaîne appropriée
- Effectuez une vérification conditionnelle entre la chaîne de date et l’horodatage actuel
<?php
$todaysDate = date("Y-m-d H:i:s");
$dateString = "2021-10-12 10:00:00";
if ($dateString < $todaysDate) {
echo "The date you supplied is LESS than the current date";
} else {
echo "The date you supplied is NOT LESS than the current date";
}
?>
Production :
The date you supplied is LESS than the current date
Comparer des dates avec une fonction personnalisée
Vous utilisez une fonction pour éviter la répétition de code. Le premier exemple de ce tutoriel a montré comment vous pouvez comparer des dates avec strtotime()
et time()
.
Dans ce cas, vous allez créer une fonction. Cette fonction acceptera une chaîne de date comme paramètre, qui à son tour passera à strtotime()
. Vous passez la chaîne "today"
à un autre strtotime()
à l’intérieur de la fonction.
Maintenant, vous avez deux choses que vous pouvez comparer, qui sont,
- Le temps que vous souhaitez comparer
- La chaîne
today
est passée à un autrestrtotime()
Vous pouvez utiliser une comparaison stricte pour comparer les dates avec ces critères. Vous pouvez créer une fonction de comparaison pour vérifier les éléments suivants.
- La date d’aujourd’hui
- Une date passée
- Une date future
Ce qui suit vérifiera si la chaîne de date fournie est une date actuelle :
<?php
function checkToday($time) {
$convertToUNIXtime = strtotime($time);
$todayUNIXtime = strtotime('today');
return $convertToUNIXtime === $todayUNIXtime;
}
if (checkToday('2021-12-13')) {
echo "Yeah it's today";
} else {
echo "No, it's not today";
}
?>
Production :
No, it's not today
Vérifiez une date passée.
<?php
function checkThePast($time) {
$convertToUNIXtime = strtotime($time);
return $convertToUNIXtime < time();
}
if (checkThePast('2021-12-13 22:00:00')) {
echo "The date is in the past";
} else {
echo "No, it's not in the past";
}
?>
Production :
The date is in the past
Vous pouvez vérifier une date future avec ce qui suit.
<?php
function checkTheFuture($time) {
$convertToUNIXtime = strtotime($time);
return $convertToUNIXtime > time();
}
if (checkTheFuture('2021-12-13 22:00:00')) {
echo "The date is in the future";
} else {
echo "No, it's not in the future";
}
?>
Production :
No, it's not in the future
Comparer les dates avec l’objet PHP Datetime
La classe PHP DateTime
vous donne une manière orientée objet de travailler avec des chaînes de date en PHP. Il a une suite de méthodes avec lesquelles vous pouvez travailler. Il encapsule une certaine logique derrière la scène et vous donne une interface propre avec laquelle travailler.
Par rapport à strtotime()
et date()
, DateTime
présente les avantages suivants :
- Il peut fonctionner avec plus de chaînes de date
- Il est plus facile de travailler avec
- Il fournit une comparaison directe des dates
Lorsque vous avez l’intention de comparer des dates avec DateTime
, procédez comme suit.
- Analysez la chaîne de date dans un objet
DateTime
- Comparez les dates avec des opérateurs comme inférieur à ( < ), supérieur à ( > ) ou égal à ( == )
<?php
$firstDate = new DateTime("2020-12-13");
$secondDate = new DateTime("2021-12-13");
// Compare the date using operators
if ($firstDate > $secondDate) {
echo "First date is GREATER than the second date";
} else if ($firstDate < $secondDate) {
echo "First date is LESS than the second date";
} else {
echo "First and second dates are EQUAL";
}
?>
Production :
First date is LESS than the second date
Comparaisons de dates multiples avec Arsort()
et strtotime()
Si vous souhaitez comparer plusieurs chaînes de date, vous pouvez les stocker dans un tableau.
Avec les dates dans le tableau, vous pouvez utiliser une méthode de boucle appropriée pour travailler avec le tableau. Par exemple, foreach
.
Dans la boucle de foreach
, vous pouvez convertir chaque date en leur horodatage UNIX à l’aide de strtotime()
. Ensuite, vous pouvez trier les dates avec arsort()
.
<?php
// Store the dates
$dateArray = ["2020-09-30", "2021-12-13", "2021-08-05"];
// Convert each date to a UNIX timestamp
// and store them in another array
$dateArrayTimestamp = [];
foreach ($dateArray as $date) {
$dateArrayTimestamp[] = strtotime($date);
}
// Sort the dates,
arsort($dateArrayTimestamp);
// Print the date starting with the
// current date
foreach ($dateArrayTimestamp as $key => $value) {
echo "$key - " . date("Y - m - d", $value) . "<br>";
}
?>
Production :
1 - 2021 - 12 - 13<br>2 - 2021 - 08 - 05<br>0 - 2020 - 09 - 30<br>
Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedInArticle connexe - PHP DateTime
- Comment obtenir le dernier jour du mois avec les fonctions PHP
- Comment calculer la différence entre deux dates à l'aide de PHP
- Comment convertir la date et l'heure en chaîne de caractères en PHP
- Comment obtenir l'année en cours en PHP
- Comment convertir une date en un horodatage en PHP
- Comment convertir un horodatage en une date ou une heure lisible en PHP