2013-07-16 44 views
-6

什麼是減去日期的最佳方式,以查看留給某個固定日期事件的時間?例如,我想要顯示2013-10-14在遙遠的將來會發生多少天。如何減去日期以查看在PHP中剩餘的時間?

$now=strtotime(date("Y-m-d")); 
$fix=strtotime(date("2013-10-14")); 
$left=$fix-$now; 
$left=date('d', $left); 
echo "There are ".$left." days left"; 

的問題是:它會顯示01天留下。我想我沒有很好地將時間戳格式化爲數據格式。我對嗎?

+0

解決你的第一個問題,不要用相同的內容製作一個新的問題。 –

+0

我得到'剩下31天'作爲輸出。 –

+0

可能的重複[什麼是減去日期以查看什麼時候留在PHP?]的最佳方式(http://stackoverflow.com/questions/17687461/what-is-the-best-way-for-subtracting-日期 - 看到什麼時間是在PHP中) – AD7six

回答

3

您正在尋找date_diff

$datetime1 = new DateTime('2009-10-11'); 
$datetime2 = new DateTime('2009-10-13'); 
$interval = $datetime1->diff($datetime2); 
echo $interval->format('%R%a days'); 
0

您將差異視爲絕對時間;如果你提供的一年中你的date()功能它可能會顯示1970年

大概秒轉換爲天,最簡單的方法就是劃分:

$now = time(); 
$then = strtotime('2013-10-14'); 
$seconds_left = $then-$now; 
$days_left = $seconds_left/60*60*24; 

和舍入或截斷,以滿足您的需求。對於更復雜的操作,請查看DateInterval

編輯顯示獲取當前時間比您正在做的更簡單。

+1

不要相信秒做日期數學,尤其是如果你正在編碼的東西,取決於秒。它不考慮夏令時或閏秒! – BLaZuRE

+0

好點,雖然增加的開銷可能不值得,如果偶爾關閉一小時是一個問題。但是,如果這是一個問題,那麼這不是最好的方法。 – Jerry

2

DateTime::diff

$now = new DateTime(); 
$fix = new DateTime("2013-10-14"); 
echo $now->diff($fix)->days.' days left'; 
0

的strtotime賦予您以秒測得的Unix時間戳。由於日期需要一個unix時間戳,因此您在那裏可以看到與時期相差幾秒的日期。所以,你的代碼應該是:

$now=strtotime(date("Y-m-d")); 
$fix=strtotime(date("2013-10-14")); 
$left=$fix-$now; 
$left = round($left/(3600*24)); 

echo "There are ".$left." days left"; 
+0

當它應該是'88'時,這會給出'89'。 –

+0

@amalmurali你當地的時間是...你確定它不是昨天:)。它爲我工作。 – Orangepill