Wie man die Differenz zwischen zwei Daten mit PHP berechnet

Ralfh Bryan Perez 30 Januar 2023
  1. Die Verwendung von strtotime() zur Berechnung der Differenz zwischen zwei Daten für PHP-Versionen unter 5.3
  2. Verwendung der Objekte DateTime() und DateInterval() für PHP 5.3 und höher
Wie man die Differenz zwischen zwei Daten mit PHP berechnet

Es gibt mehrere Möglichkeiten, die Differenz zwischen zwei Daten mit PHP zu berechnen. Dieser Artikel zeigt Ihnen, wie Sie die PHP-Version < 5.3 und die neueste und zuverlässigere Methode für die neuere Version (>5.3) verwenden können, um die Datumsdifferenz zu berechnen.

Die Verwendung von strtotime() zur Berechnung der Differenz zwischen zwei Daten für PHP-Versionen unter 5.3

Die strtotime() konvertiert zwei Datumsangaben in UNIX-Zeit und berechnet daraus die Anzahl der Sekunden. Daraus ist es einfacher, verschiedene Methoden mit Sekunden zu berechnen. Die Funktion akzeptiert einen String-Parameter in englischer Sprache, der die Beschreibung von Datum und Zeit anzeigt.

Beispiel:

$firstDate = "2019-01-01";
$secondDate = "2020-03-04";

$dateDifference = abs(strtotime($secondDate) - strtotime($firstDate));

$years  = floor($dateDifference / (365 * 60 * 60 * 24));
$months = floor(($dateDifference - $years * 365 * 60 * 60 * 24) / (30 * 60 * 60 * 24));
$days   = floor(($dateDifference - $years * 365 * 60 * 60 * 24 - $months * 30 * 60 * 60 *24) / (60 * 60 * 24));

echo $years." year,  ".$months." months and ".$days." days";

//output: 1 year, 2 months and 3 days

Das obige Beispiel ermittelt die Differenz zweier Datumsangaben unter Verwendung mehrerer Funktionen wie abs(), floor() und hauptsächlich der strtotime().

Die strtotime() erhält den UNIX-Sekundenwert des Datums und mit abs() den absoluten Wert des ersten Datums.

Die Funktion floor() wird verwendet, um die Sekunden auf die nächste ganze Zahl abzurunden.

Um das Jahr zu erhalten, multiplizieren Sie 365 Tage mit 60 Minuten, 60 Sekunden und 24 Stunden und dividieren sie dann durch die Differenz.

Um die Monate zu erhalten, multiplizieren Sie 30 Tage mit 60 Minuten, 60 Sekunden und 24 Stunden und dividieren Sie sie durch die Differenz der Datumsdifferenz multipliziert mit dem Jahr und 365 Tagen, 60 Minuten, 60 Sekunden und 24 Stunden.

Um dann die Tagesdifferenz zu erhalten, multiplizieren Sie 60 Minuten, 60 Sekunden und 24 Stunden und dividieren Sie sie durch die Differenz der Datumsdifferenz, dem Produkt aus Jahren, 365 Tagen, 60 Minuten, 60 Sekunden und 24 Stunden und den Produkten aus Monaten, 30 Tagen, 60 Minuten und 60 Sekunden und 24 Stunden.

Schließlich fügen Sie alles zusammen in eine Variable ein, um die endgültige Differenz auszudrucken.

Verwendung der Objekte DateTime() und DateInterval() für PHP 5.3 und höher

Diese Methode ist ein objektorientierter Stil, um den Unterschied zwischen zwei Daten zu ermitteln. Dies ist auch die einfachste Methode, da sie keine manuelle Berechnung der Daten erfordert und empfohlen wird, da sie aus der neuesten Version von PHP stammt.

Beispiel:

$firstDate  = new DateTime("2019-01-01");
$secondDate = new DateTime("2020-03-04");
$intvl = $firstDate->diff($secondDate);

echo $intvl->y . " year, " . $intvl->m." months and ".$intvl->d." day"; 
echo "\n";
// Total amount of days
echo $intvl->days . " days ";

//output: 1 year, 2 months and 1 day
//        428 days

Im obigen Beispiel wurde es im Gegensatz zur Verwendung von strtotime() und anderen Funktionen und Berechnungen durch DateTime() und DateInterval() Objekte einfacher.

Zuerst deklarieren Sie die Daten mit new DateTime(). Dann holen Sie den ganzzahligen Wert der Differenz mit dem DateInterval() Objekt diff() am ersten Datum und übergeben das zweite Datum als Parameter.

Um schließlich das Jahr zu erhalten, benutzen Sie einfach das Objekt y. Benutzen Sie m, um die Monate zu erhalten und d für den Tag.

Verwandter Artikel - PHP Date

Verwandter Artikel - PHP DateTime