2013-10-22 82 views
0

我一直在試圖創造一個計時器,每天倒計時到2PM每天。在下午2點後,它應顯示第二天下午2點的小時數。我已經能夠使用下面的代碼來進行未來的日期,而不是每天的「今天」。php strtotime每日倒計時到特定時間

date_default_timezone_set('America/New_York'); 
$iTimeTo = strtotime('today 14:00)'; 
$iDiffTime = $iTimeTo - time(); 
printf("Remaining: %s\n", date('H:i', $iDiffTime)); 

輸出不顯示正確的剩餘小時數。

+4

這很好。你有問題嗎? –

+0

爲什麼'$ iTimeTo'?爲什麼不'$ time_to'? – baldrs

回答

1
strtotime('today 14:00'); 

成爲過去在14:00以後,所以你會在下午兩點到午夜之間開始變得無意義的結果。

date_default_timezone_set('America/New_York'); 
$today = strtotime('today 14:00'); 
$tomorrow = strtotime('tomorrow 14:00'); 
$now = time(); 
$timeLeft = ($now > $today ? $tomorrow : $today) - $now; 
printf("Remaining: %s\n", gmdate("H:i:s", $timeLeft)); 
+0

完美,謝謝! –

0
$iTimeTo = strtotime('today 14:00)'; 

應該是:

$iTimeTo = strtotime('today 14:00'); 

其他,我不明白爲什麼它不會工作,我測試過它,它給了我「剩餘時間:20:59」。

+0

剩下的應該是2個小時?美國東部時間下午2點(目前在本帖子發表時的美國東部時間) –

+0

我是格林威治標準時間,在測試環境下我無法強制設置當地時區。 – Karl

0

可以使用gmdate()功能格式化剩下的 「秒」 到時:分:秒這樣的:

date_default_timezone_set('America/New_York'); 
$iTimeTo = strtotime('today 14:00'); 
$iDiffTime = $iTimeTo - time(); 
printf("Remaining: %s\n", gmdate("H:i:s", $iDiffTime)); 

輸出:

Remaining: 01:59:55 
+0

完美,這解決了我的問題。謝謝。 –

+0

@ user1436048只需等待2小時... –

+0

@Sébastien - 是的,我現在看到.. Thx。 –