Heim  >  Artikel  >  Backend-Entwicklung  >  Warum prüft mein PHP-Code nicht genau, ob das heutige Datum in einen Datumsbereich fällt?

Warum prüft mein PHP-Code nicht genau, ob das heutige Datum in einen Datumsbereich fällt?

DDD
DDDOriginal
2024-11-26 03:42:07562Durchsuche

Why is my PHP code not accurately checking if today's date falls within a date range?

Ü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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn