2013-06-18 45 views
1
date_default_timezone_set('Europe/London'); 
$date = '06-17-2013'; 

if (strtotime("now") > strtotime("+5 days", strtotime($date))) { 
    echo '5 days have gone by'; 
} else { 
    echo 'not yet'; 
} 

此函數總是返回'5天過去'。我永遠無法讓它返回'尚未' 爲什麼?從變化日期起的5天

+4

也許因爲倫敦人不使用MM-DD-YYYY格式? – Kermit

回答

1

你需要使用什麼是$date = '17-06-2013';(DD-MM-YYYY)

$date = '2013-06-17';(YYYY-MM-DD)

,而不是

$date = '06-17-2013';

1

嘗試通過YYYY-MM-DD指定日期。 strtotime似乎不支持MM-DD-YYYY表示法。

1

你應該考慮使用SPL DateTime對象。

試試這個:

$date = new DateTime('2013-06-17'); 
$date->add(new DateInterval("P5D"); 
$now = new DateTime(); 
if($now > $date) { 
    echo "5 Days have passed"; 
} 
else{ 
    echo "not yet"; 
} 
1

如果更改'06-17-2013'這個'06/17/2013'預期

<?php 
date_default_timezone_set('Europe/London'); 
$date = '06/17/2013'; 

if (strtotime("now") > strtotime("+5 days", strtotime($date))) { 
    echo '5 days have gone by'; 
} else { 
    echo 'not yet'; 
} 
?> 

有使用斜槓(/)和連字符之間的差異,將工作 - 在的strtotime功能。

Dates in the m/d/y or d-m-y formats are disambiguated by looking at the separator 
between the various components: if the separator is a slash (/), then the American 
m/d/y is assumed; whereas if the separator is a dash (-) or a dot (.), then the 
European d-m-y format is assumed. 
相關問題