Heim > Artikel > Backend-Entwicklung > Warum prüft mein PHP-Code nicht genau, ob das heutige Datum in einen Datumsbereich fällt?
Überprüfen von Datumsbereichen in PHP
In PHP kann es vorkommen, dass Sie feststellen müssen, ob ein bestimmtes Datum in einen bestimmten Bereich fällt Termine. Dies wird häufig in Anwendungen für Gültigkeitsprüfungen oder Terminplanung verwendet.
Frage:
Sie sind auf ein Problem gestoßen, als Sie mithilfe von überprüfen wollten, ob das heutige Datum zwischen zwei Vertragsdaten liegt Folgender Code:
$paymentDate = date('d/m/Y'); $contractDateBegin = date('d/m/Y', '01/01/2001'); $contractDateEnd = date('d/m/Y', '01/01/2015'); if ($paymentDate > $contractDateBegin && $paymentDate < $contractDateEnd) { echo "is between"; } else { echo "NO GO!"; }
Dieser Code funktioniert jedoch nicht wie erwartet, sodass Sie nicht sicher sind, was Sie tun verpasst.
Antwort:
Ein entscheidender Fehler im bereitgestellten Code ist das falsche Datumsformat, das für $paidDate verwendet wird. Um Daten effektiv vergleichen zu können, ist es wichtig, sie in ein einheitliches Format zu konvertieren, das normalerweise das Format „JJJJ-MM-TT“ ist. Um dies zu erreichen, können Sie die Funktion strtotime() verwenden:
$paymentDate = date('Y-m-d'); $paymentDate = date('Y-m-d', strtotime($paymentDate));
Um sicherzustellen, dass das heutige Datum innerhalb des Bereichs liegt, verwenden Sie außerdem >= und <= statt > und <. Dies liegt daran, dass Ihr Code derzeit den letzten Tag des Bereichs ausschließt.
Der korrigierte Code unten sollte ordnungsgemäß funktionieren, um zu überprüfen, ob das heutige Datum zwischen den Vertragsdaten liegt:
$paymentDate = date('Y-m-d'); $paymentDate = date('Y-m-d', strtotime($paymentDate)); //echo $paymentDate; // echos today! $contractDateBegin = date('Y-m-d', strtotime("01/01/2001")); $contractDateEnd = date('Y-m-d', strtotime("01/01/2012")); if (($paymentDate >= $contractDateBegin) && ($paymentDate <= $contractDateEnd)) { echo "is between"; } else { echo "NO GO!"; }</strong>
Hinweis: Wenn Ihr ursprünglicher Code verwendete ein anderes Datumsformat (z. B. „TT/MM/JJJJ“). Stellen Sie sicher, dass Sie ihn mit dem in „JJJJ-MM-TT“ konvertieren strtotime()-Funktion, um genaue Vergleiche sicherzustellen.
Das obige ist der detaillierte Inhalt vonWarum prüft mein PHP-Code nicht genau, ob das heutige Datum in einen Datumsbereich fällt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!