2012-09-02 119 views
0

我有一个Jquery倒计时,直到每周的事件。该活动在美国中部时间每周日下午7点。我在php中生成倒计时。我正在寻找一种方法来设置倒计时,以在当前事件发生一小时后的一周后显示下一个事件。PHP事件发生倒计时和事件发生时更新

例子:

本次活动是每周日下午7:00 CST和持续一个小时。

如果您在星期日下午6:00查看网站,应该开始倒计时一个小时。 (00:01:00:00) 如果您在星期日的晚上7:00 - 晚上8:00查看网站,它会显示0.(00:00:00:00) 如果您看到活动星期天晚上9点,它会显示6天22小时0分0秒(06:22:00:00)

我有代码显示我输入的日期和时间的倒计时,但我希望发生这种情况无需每周更改代码。

<?php 
     $rem = strtotime('2012-09-02 19:00:00') - time(); 
     $day1 = floor($rem/86400); 
     $hr1 = floor(($rem % 86400)/3600); 
     $min1 = floor(($rem % 3600)/60); 
     $sec1 = ($rem % 60); 
     $day = sprintf('%02d',$day1); 
     $hr = sprintf('%02d',$hr1); 
     $min = sprintf('%02d',$min1); 
     $sec = sprintf('%02d',$sec1); 
     echo "$day:"; 
     echo "$hr:"; 
     echo "$min:"; 
     echo "$sec"; ?> 

任何想法?

+1

相信我,当我告诉你这个:'DateTime'对象会为你节省很多头痛。 –

+0

我意识到我拥有的代码不是实现它的最佳方式,但它现在可行。 –

+0

[可将Unix时间戳转换为数分钟或数小时或数天的php函数可能重复?](http://stackoverflow.com/questions/2059603/php-function-to-convert-unix-timestamp-into-minutes-或 - 小时或天 - 像DIGG) – Incognito

回答

0
$time = new DateTime("Next Sunday 7:00 PM", new DateTimeZone("America/Chicago")); 
$diff = $time->diff(new DateTime("now")); 
echo $diff->format("%D:%H:%I:%S"); 

更改timezone根据什么最适合你。不要依靠UTC/CST/WHATEVER,给一个适当的位置,以便你的时间准确。

+0

由于某种原因,它正在显示对象(DateTime)#1(3){[“date”] => string(19)“2012-09-09 19:00:00”[“timezone_type”] => int(3 )[“timezone”] => string(15)“America/Chicago”} 07:03:35:28而不仅仅是07:03:35:28 –

+0

这是感谢'var_dump()'删除了那一行。 –