2010-09-04 44 views
0

确定好我有这个错误与反我做女巫suppost倒计时到0PHP的:UNIX时间戳计数backwords问题

$time=1283593330+(60*15); 
$time3= time(); 
$time2=$time-$time3; 

1283593330=Sat, 04 Sep 2010 09:42:10 GMT 

错误是这样的: 当$时间3时间戳打时间戳。 $ time它表示05:00:00 00:00:00的实例。 这是我用来调用它的代码。

Time left: '.date('g:i:s ',$time2).'<br /> 

IM不确定是不是我做错了什么,如果5是UNIX_TIMESTAMP或PHP

日期称道的主要时间反正有解决这一问题?或者这是来自于时间戳,就是我需要的一个想法的不好之处。

+0

'$时间= 1283594342 +(60 * 15);'?这是什么意思?你能详细说明你想要做什么以及你有什么问题吗? – 2010-09-04 10:29:14

+0

你能否解释一下你得到的错误,你并没有完全理解。 – 2010-09-04 10:29:17

+0

即时对不起我的英语和语法是不好的给我15和生病尝试重新对它正确 – Catles 2010-09-04 10:30:32

回答

2

你的时区比UTC早5小时:你说1283593330是09:42,但它实际上是04:42 UTC。

$time2是零,这代表了Unix时间纪元:这是午夜(UTC)在1月1日1970年所以,当你输出这个使用date,它显示在你的时区那段时间:00:00 UTC这是05: 00在你的时区。

重要的是当达到目标时间时$time2为零。

鉴于您的计数器倒计时15分钟,就可以得到这样的剩余时间:

$hours = floor($time2/60); 
$mins = $time2 % 60; 
printf("Time left: %d:%02d\n", $hours, $mins); 
+0

只是改变我的服务器时间,并得到它的工作太多 – Catles 2010-09-04 11:01:33

+0

你的意思是你已经改变了服务器上的时区?这没有必要。使用'date'将'$ time2'显示为日期/时间并不合理;这是一个时间差异,而不是绝对的时间。无需在服务器上设置特定的时区就可以轻松实现这一功能。 – 2010-09-04 11:06:26