2013-06-26 7 views
9

diese Art von Datum Objekt gegeben date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))PHP-Datum kleiner als ein anderes Datum

wo es einem mm/tt/Tag geben kann, die der „erste Montag im August“ ist zum Beispiel

wie kann Ich entscheide, ob dieses Datum größer, kleiner oder gleich dem heutigen Datum ist.

Ich brauche eine now() Methode, die in diesem Format arbeitet und zwischen Datumsobjekten

Ich habe nicht versucht, date() < date(), noch verglichen werden. Aber ich glaube nicht, dass

jede Einsicht

geschätzt arbeiten
+1

Sie glauben nicht, dass es funktioniert? Warum versuchst du es nicht? –

+0

@DanyCaissy er will die Ausgabe von date() vergleichen, nicht die ganze Zahl timestamp ... – bwoebi

Antwort

17

Vergleichen Sie die Zeitstempel:

if (strtotime($numerical." ".$day." of ".date("F")) < time()) { 
    // older 
} else { 
    // newer 
} 

Dies ist möglich, da strtotime() gibt die Sekunden seit dem 1.1.1970 und time() auch. Und in PHP können Sie ganze Zahlen einfach vergleichen ...

20

Ich habe Ihre Frage am Anfang missverstanden. Sie verwenden kein Datum Objekt im Vergleich, wie Sie sagen, aber eher eine Zeichenfolge Darstellung eines Datums (erstellt von date).

Es ist einfach, fast jede String-Darstellung eines Datums der aktuellen Zeit zu vergleichen:

$now = time(); 
$date = '2015/03/12'; #could be (almost) any string date 

if (strtotime($date) > $now) { 
    #$date occurs in the future 
} else { 
    #$date occurs now or in the past 
} 

ein Datum Zeichenfolge an den aktuellen Tag Vergleich ist nur ein wenig komplizierter. Hier ist eine Möglichkeit, es zu tun:

$today_start = strtotime('today'); 
$today_end = strtotime('tomorrow'); 
$date = '2015/03/12'; #could be (almost) any string date 

$date_timestamp = strtotime($date); 

if ($date_timestamp >= $today_end) { 
    #$date occurs after today 
} elseif ($date_timestamp < $today_start) { 
    #$date occurs before today 
} else { 
    #$date occurs today 
} 

Anstatt verwenden time die aktuelle Uhrzeit auf die Sekunde zu erhalten, berechnen Sie die Zeitstempel für die beiden midnights, die das heutige Datum Buchstütze. Dann vergleichst du dich mit denen.

Es gibt mehr clevere Möglichkeiten, dies zu tun (wie zum Beispiel die YYYY/MM/DD Darstellungen des Datums und heute vergleichen), aber dieses Beispiel baut gut auf dem ersten.

+0

thx :) flexibler und klare Antwort –