0

我一直在尝试创建一个每天倒计时到每天下午 2 点的计时器。下午 2 点之后,它应该显示直到第二天下午 2 点的小时数。我已经能够将以下代码用于未来的日期,而不是每天的“今天”。

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

输出未显示正确的剩余小时数。

4

3 回答 3

1
strtotime('today 14:00');

下午 2 点后成为过去,因此您将在下午 2 点到午夜之间开始得到无意义的结果。

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));
于 2013-10-22T16:06:54.957 回答
0
$iTimeTo = strtotime('today 14:00)'; 

应该:

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

除此之外,我看不出它为什么不起作用,我已经对其进行了测试,它给了我“剩余时间:20:59”。

于 2013-10-22T15:59:27.960 回答
0

您可以使用gmdate()函数将剩余的“秒”格式化为 Hours:MinuteS:Seconds,如下所示:

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 
于 2013-10-22T16:00:55.763 回答