2011-02-22 76 views
1

哪有我,如果以下日期(格式DD/MM/YYYY)是未來最好檢查一下:01/03/2011PHP:檢查是否EU日期格式是在未來

爲了澄清,這是1 2011年3月。

謝謝。編輯:時區是通過date_default_timezone_set('Europe/London')設置的。

+0

你想怎麼處理目前的一天嗎?整個24小時的時間應該相等嗎? – Mikel 2011-02-22 20:50:25

回答

0

您可以使用strtotime,並與當前日期進行比較。

首先,您需要將/更改爲 - 將其解釋爲歐洲日期。在第m

日期/ d/y或DMY格式 是通過查看各種 部件之間的 隔板消除歧義:如果分離器是 斜槓(/),則美國米/ d /假設y爲 ;而如果分隔符是 短劃線( - )或點(。),則假定歐洲d-m-y格式爲 。

所以把他們放在一起:

$time = strtotime(str_replace("/","-",$date)) 
if ($time > time()) 
{ 
    echo "$date is in the future." 
} 
+0

如果是01/03/2011的12:00,該怎麼辦?這段代碼會說01/03/2011是過去的。 – Mikel 2011-02-22 20:51:01

+0

@Mikel在一分鐘內再次運行代碼! – AndrewKS 2011-02-22 21:00:33

1
$date = "01/03/2011"; 

// convert the date to a time structure 
$tmarr = strptime($date, "%d/%M/%Y"); 

// convert the time structure to a time stamp representing the start of the day 
$then = mktime(0, 0, 0, $tmarr['tm_mon']+1, $tmarr['tm_mday'], $tmarr['tm_year']+1900); 

// get the current time 
$today = mktime(0, 0, 0); 

// compare against the current date 
if ($then > $today) { 
    echo "$date is in the future"; 
} 
elseif ($then == $today) { 
    echo "$date is today"; 
} 
else { 
    echo "$date is not in the future"; 
} 
相關問題