Wie kann ich zwei Daten in PHP vergleichen?
Das Datum wird im folgenden Format in der Datenbank gespeichert
2011-10-2
Wenn ich das heutige Datum mit dem Datum in der Datenbank vergleichen möchte, um festzustellen, welches größer ist, wie würde ich das tun?
Ich habe es versucht,
$today = date("Y-m-d");
$expire = $row->expireDate //from db
if($today < $expireDate) { //do something; }
aber so funktioniert es nicht wirklich. Was ist eine andere Art, es zu tun?
Antworten:
Speichern Sie es in JJJJ-MM-TT und dann funktioniert der Zeichenfolgenvergleich, weil '1'> '0' usw.
quelle
2016-03-27 11:59:47 ::: 2016-03-14 10:30:00
?Wenn alle Ihre Daten nach dem 1. Januar 1970 liegen, können Sie Folgendes verwenden:
Wenn Sie PHP 5> = 5.2.0 verwenden, können Sie die DateTime-Klasse verwenden:
Oder etwas in diese Richtung.
quelle
1st of January of 1970
nur für alte Versionen von PHP, die unter Windows ausgeführt werden, und es war unter Unix nie ein Problem.strtotime
wird für größere Daten false zurückgeben. stackoverflow.com/questions/2012589/…DateTime
Methode die bevorzugte Methode ist. Dieses Objekt kann weit mehr alsstrtotime
je zuvor.new DateTime('now')
funktioniert auch, um das heutige Datum abzurufenUm die bereits gegebenen Antworten zu ergänzen, sehen Sie sich das folgende Beispiel an:
Update: Oder verwenden Sie einfach die Funktion date () der alten Schule :
quelle
Ich würde das nicht mit PHP machen. Eine Datenbank sollte wissen, welcher Tag heute ist (verwenden Sie beispielsweise MySQL-> NOW ()), damit es sehr einfach ist, innerhalb der Abfrage zu vergleichen und das Ergebnis ohne Probleme zurückzugeben, abhängig von den verwendeten Datumstypen
quelle
quelle
Hier erfahren Sie, wie Sie die Differenz zwischen zwei Daten in Minuten ermitteln können.
quelle
Sie können die Daten in UNIX-Zeitstempel konvertieren und die Differenz zwischen ihnen in Sekunden vergleichen.
quelle
Ich hatte auch dieses Problem und löse es durch:
quelle
Hier ist mein Dreh, wie man mit PHP den Unterschied in Tagen zwischen zwei Daten ermittelt. Beachten Sie die Verwendung von '!' im Format, um den Zeitteil der Daten zu verwerfen, dank Informationen von DateTime createFromFormat ohne Zeit .
quelle
Ich habe die Antwort in einem Blog gefunden und es ist so einfach wie:
Und Sie erhalten die Tage zwischen den beiden Daten.
quelle
Dies funktioniert aufgrund der String-Vergleichslogik von PHP. Einfach können Sie überprüfen ...
Beide Daten müssen dasselbe Format haben. Die Ziffern müssen links mit Nullen aufgefüllt und von höchstwertig bis niedrigstwertig geordnet werden.
Y-m-d
undY-m-d H:i:s
diese Bedingungen erfüllen.quelle
d-m-Y
wird nicht funktionieren ..Y-m-d
(mit führender Null wie 2016-05-08) wird funktionieren. Überprüfen Sie diese Daten imd-m-Y
Format01-10-2016
und beim20-02-2016
Vergleich als Zeichenfolgen 0 <2 wird der Vergleich2011-10-2
.Wenn Sie möchten, dass ein Datum ($ date) in einem bestimmten Intervall abläuft, z. B. ein Token-Ablaufdatum, wenn Sie ein Kennwort zurücksetzen, haben Sie folgende Möglichkeiten:
In Ihrem Fall können Sie den Vergleich jedoch wie folgt durchführen:
quelle
requestDate()
Methode bewirkt - es wird nirgendwo erwähnt. Ich würde Ihre Antwort weder verwenden noch jedem Forscher empfehlen, Ihre Lösung zu verwenden. Ich sehe nicht voraus, dass ich meine Stimme ändere.Versuchen Sie zunächst, dem gewünschten Datum und der Uhrzeit Ihres Servers das gewünschte Format zuzuweisen:
Erhalten Sie das aktuelle Datum und die Uhrzeit
$ current_date = getdate ();
Trennen Sie Datum und Uhrzeit, um sie nach Ihren Wünschen zu verwalten:
$ current_date_only = $ current_date [year] .'- '. $ current_date [mon] .'-'. $ current_date [mday]; $ current_time_only = $ current_date ['Stunden']. ':'. $ current_date ['Minuten']. ':'. $ current_date ['Sekunden'];
Vergleichen Sie es, je nachdem, ob Sie in Ihrer Datenbank das Datum oder die Uhrzeit von donly verwenden:
$ today = $ current_date_only. ' '. $ current_time_only;
oder
$ today = $ current_date_only;
if ($ today <$ expireDate)
ich hoffe es hilft
quelle