Verschiedene Möglichkeiten zum Vergleichen von Daten in PHP

Habdul Hazeez 30 Januar 2023
  1. Daten mit strtotime() und time() vergleichen
  2. Vergleichen Sie Daten mit der Funktion Date() und der bedingten Prüfung
  3. Vergleichen Sie Daten mit einer benutzerdefinierten Funktion
  4. Vergleichen Sie Daten mit dem PHP-Objekt Datetime
  5. Mehrere Datumsvergleiche mit Arsort() und strtotime()
Verschiedene Möglichkeiten zum Vergleichen von Daten in PHP

In diesem Artikel erfahren Sie, wie Sie Daten in PHP mit 5 verschiedenen Techniken vergleichen. Von diesen Techniken verwendet 4 eingebaute PHP-Funktionen wie strtotime(), time() und date() in der einen oder anderen Form. Die letzte Technik verwendet das PHP-Objekt DateTime.

Daten mit strtotime() und time() vergleichen

Die strtotime() ist eine eingebaute Zeitfunktion in PHP. Seine Hauptanwendung besteht darin, eine Zeichenfolge von menschenlesbaren Daten in einen gleichen UNIX-Zeitstempel umzuwandeln. Es kann verschiedene Zeichenketten analysieren und sie in ihren entsprechenden Zeitstempel konvertieren. Beispiele für solche Zeichenketten sind 2 weeks ago und next week.

Die PHP-Funktion time() gibt die aktuelle Uhrzeit zurück. Diese Zeit ist die Anzahl der Sekunden seit der UNIX-Epoche. Wenn Sie diese Sekunden in das aktuelle Datum umwandeln müssen, benötigen Sie die in PHP eingebaute date()-Funktion.

Wenn Sie diese beiden Funktionen kombinieren, können Sie Daten mit den folgenden Schritten vergleichen.

Zuerst übergeben Sie strtotime() einen Datumsstring. Es konvertiert es in seinen UNIX-Zeitstempel.

Subtrahieren Sie diesen UNIX-Zeitstempel mit der Funktion time() von der aktuellen Zeit.

Sie können das Ergebnis dieser Berechnung und einer bedingten Prüfung verwenden, um Datumsangaben zu vergleichen.

<?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";
  }
?>

Ausgabe:

Date is <b>NOT</b> in the last 24hrs

Vergleichen Sie Daten mit der Funktion Date() und der bedingten Prüfung

Mit der PHP-Funktion date() können Sie einen Zeitstempel in Ihr gewünschtes Format formatieren. Der betreffende Zeitstempel sind die Sekunden zwischen der aktuellen Uhrzeit und der UNIX-Epoche. Die UNIX-Epoche ist die Zeit seit Mitternacht des 1. Januar 1970.

Der Wert der Funktion date() hängt von der in Ihrer php.ini-Datei eingestellten Zeitzone ab.

Wenn Sie ein bestimmtes Datum mit der Funktion date() vergleichen möchten, gehen Sie wie folgt vor.

  1. Konvertieren Sie den aktuellen Zeitstempel in Ihr gewünschtes Format
  2. Schreiben Sie das Datum, das Sie vergleichen möchten, in eine geeignete Zeichenfolge
  3. Führen Sie eine bedingte Prüfung zwischen der Datumszeichenfolge und dem aktuellen Zeitstempel durch
<?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";
  }
?>

Ausgabe:

The date you supplied is LESS than the current date

Vergleichen Sie Daten mit einer benutzerdefinierten Funktion

Sie verwenden eine Funktion, um Codewiederholungen zu vermeiden. Das erste Beispiel in diesem Tutorial zeigte, wie Sie Daten mit strtotime() und time() vergleichen können.

In diesem Fall erstellen Sie eine Funktion. Diese Funktion akzeptiert einen Datumsstring als Parameter, der wiederum an strtotime() übergeben wird. Sie übergeben den String "today" an ein anderes strtotime() innerhalb der Funktion.

Jetzt haben Sie zwei Dinge, die Sie vergleichen können, nämlich

  1. Die Zeit, die Sie vergleichen möchten
  2. Der String today wird an einen anderen strtotime() übergeben

Mit einem strengen Vergleich können Sie die Daten mit diesen Kriterien vergleichen. Sie können eine Vergleichsfunktion erstellen, um Folgendes zu überprüfen.

  1. Heutiges Datum
  2. Ein vergangenes Datum
  3. Ein zukünftiges Datum

Folgendes prüft, ob die angegebene Datumszeichenfolge ein aktuelles Datum ist:

<?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";
  }
?>

Ausgabe:

No, it's not today

Suchen Sie nach einem vergangenen Datum.

<?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";
  }
?>

Ausgabe:

The date is in the past

Sie können ein zukünftiges Datum mit dem Folgenden überprüfen.

<?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";
  }
?>

Ausgabe:

No, it's not in the future

Vergleichen Sie Daten mit dem PHP-Objekt Datetime

Die Klasse PHP DateTime bietet Ihnen eine objektorientierte Möglichkeit, mit Datumszeichenfolgen in PHP zu arbeiten. Es hat eine Reihe von Methoden, mit denen Sie arbeiten können. Es kapselt eine gewisse Logik hinter den Kulissen und gibt Ihnen eine saubere Oberfläche, mit der Sie arbeiten können.

Gegenüber strtotime() und date() hat DateTime folgende Vorteile:

  1. Es kann mit mehr Datumszeichenfolgen arbeiten
  2. Es ist einfacher damit zu arbeiten
  3. Es bietet einen direkten Vergleich von Daten

Wenn Sie Datumsangaben mit DateTime vergleichen möchten, gehen Sie wie folgt vor.

  1. Parsen Sie die Datumszeichenfolge in ein DateTime-Objekt
  2. Vergleichen Sie die Daten mit Operatoren wie kleiner als ( < ), größer als ( > ) oder gleich ( == )
<?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";
  }
?>

Ausgabe:

First date is LESS than the second date

Mehrere Datumsvergleiche mit Arsort() und strtotime()

Wenn Sie viele Datumszeichenfolgen vergleichen möchten, können Sie sie in einem Array speichern.

Mit den Daten im Array können Sie eine geeignete Schleifenmethode verwenden, um mit dem Array zu arbeiten. Zum Beispiel foreach.

In der Schleife innerhalb von foreach können Sie jedes Datum mit strtotime() in seinen UNIX-Zeitstempel konvertieren. Anschliessend können Sie die Daten mit arsort() sortieren.

<?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>";
  }
?>

Ausgabe:

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

Verwandter Artikel - PHP DateTime