Verschiedene Möglichkeiten zum Vergleichen von Daten in PHP
-
Daten mit
strtotime()
undtime()
vergleichen -
Vergleichen Sie Daten mit der Funktion
Date()
und der bedingten Prüfung - Vergleichen Sie Daten mit einer benutzerdefinierten Funktion
-
Vergleichen Sie Daten mit dem PHP-Objekt
Datetime
-
Mehrere Datumsvergleiche mit
Arsort()
undstrtotime()
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.
- Konvertieren Sie den aktuellen Zeitstempel in Ihr gewünschtes Format
- Schreiben Sie das Datum, das Sie vergleichen möchten, in eine geeignete Zeichenfolge
- 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
- Die Zeit, die Sie vergleichen möchten
- Der String
today
wird an einen anderenstrtotime()
ü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.
- Heutiges Datum
- Ein vergangenes Datum
- 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:
- Es kann mit mehr Datumszeichenfolgen arbeiten
- Es ist einfacher damit zu arbeiten
- Es bietet einen direkten Vergleich von Daten
Wenn Sie Datumsangaben mit DateTime
vergleichen möchten, gehen Sie wie folgt vor.
- Parsen Sie die Datumszeichenfolge in ein
DateTime
-Objekt - 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 is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.
LinkedInVerwandter Artikel - PHP DateTime
- Wie Sie den letzten Tag des Monats mit PHP-Funktionen erhalten
- Wie man die Differenz zwischen zwei Daten mit PHP berechnet
- Wie man DateTime in PHP in Strings konvertiert
- Wie Sie das laufende Jahr in PHP bekommen
- Wie konvertiert man ein Datum in einen Zeitstempel in PHP
- Wie man in PHP einen Zeitstempel in ein lesbares Datum oder eine lesbare Uhrzeit konvertiert