Différentes façons de comparer des dates en PHP

Habdul Hazeez 30 janvier 2023
  1. Comparez les dates avec strtotime() et time()
  2. Comparer les dates avec la fonction Date() et la vérification conditionnelle
  3. Comparer des dates avec une fonction personnalisée
  4. Comparer les dates avec l’objet PHP Datetime
  5. Comparaisons de dates multiples avec Arsort() et strtotime()
Différentes façons de comparer des dates en PHP

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.

  1. Convertissez l’horodatage actuel au format souhaité
  2. Écrivez la date que vous souhaitez comparer dans une chaîne appropriée
  3. 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,

  1. Le temps que vous souhaitez comparer
  2. La chaîne today est passée à un autre strtotime()

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.

  1. La date d’aujourd’hui
  2. Une date passée
  3. 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 :

  1. Il peut fonctionner avec plus de chaînes de date
  2. Il est plus facile de travailler avec
  3. Il fournit une comparaison directe des dates

Lorsque vous avez l’intention de comparer des dates avec DateTime, procédez comme suit.

  1. Analysez la chaîne de date dans un objet DateTime
  2. 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 avatar Habdul Hazeez avatar

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.

LinkedIn

Article connexe - PHP DateTime