2013-06-26 102 views
9

date("m/d/Y", strtotime($numerical." ".$day." of ".date("F")))PHP的日期比給這種Date對象的其他日期

它可能會給MM/DD/YYYY一天是「八月的第一個星期一」,例如

怎麼能我決定這個日期是否大於,小於或等於今天的日期?

我需要一個now()方法,將這種格式的作品,並可以日期對象之間進行比較

我沒試過日期()<日期(),但。但我不認爲這會工作

任何見解讚賞

+1

你不認爲它會起作用嗎?爲什麼不嘗試呢? –

+0

@DanyCaissy他想比較date()的輸出,而不是整數時間戳... – bwoebi

回答

17

比較時間戳:

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

這是可能的,因爲strtotime()和1.1.1970太time()返回秒。在PHP中,你可以輕鬆地比較整數...

20

我誤解了你的問題。您在日期比較中沒有使用日期對象,而是使用日期的字符串表示形式(由date創建)。

可以很容易地幾乎日期的任何字符串表示比較當前時間

$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 
} 

比較日期字符串當前當天只是稍微複雜一點。下面是做這件事:

$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 
} 

而不是使用time來獲取當前的時間精確到秒,你計算出該書夾今天的日期兩個午夜的時間戳。然後你比較這些。

還有更多巧妙的方法來做到這一點(比如比較日期和今天的YYYY/MM/DD表示法),但這個例子很好地構建在第一個上面。

+0

thx :)更靈活,更清晰的答案 –