2012-07-30 35 views
0

我目前正在通过使用它们的图像精灵表示来实时打开和关闭业务。PHP - 基于时间的不同状态

在下面的代码中,我将默认时区设置为GMT,将时间格式设置为0000.当测试时,除了0000和0959之外,它是很好的。它似乎忽略了时间格式并且没有放置前导零英寸

此外,有没有一个更有效的方式做下面?

在此先感谢。

<?php date_default_timezone_set("Europe/London"); $time = date("Hi");?> 

.<?php if($time > 1600 && $time < 2329){echo "business1";} else{echo "business1:hover";}?> {background: url(http://website.com/business1.png) 0 -145px;} 
.<?php if($time > 1600 && $time < 2329){echo "business1:hover";} else{echo "business1";}?> {background: url(http://website.com/business1.png) 0 0;} 

.<?php if($time > 0800 && $time < 1659){echo "business2";} else{echo "business2:hover";}?> {background: url(http://website.com/business2.png) 0 -145px;} 
.<?php if($time > 0800 && $time < 1659){echo "business2:hover";} else{echo "business2";}?> {background: url(http://website.com/business2.png) 0 0;} 

回答

1

在PHP is understood to be an octal number字面上0800由于领先0。你不应该比较时间作为字符串开始。使用UNIX时间戳进行时间比较:

$now = time(); 
if ($now > strtotime('16:00') ...) 
+0

我做了这个测试:'$ i = 0800; echo $ i'并输出'0',但这是因为'8'在八进制数中无效。 – 2012-07-30 09:27:09

+0

@Wouter确实如此。 – deceze 2012-07-30 09:27:38

+0

完美,谢谢欺骗它的作品。 – jamesakers 2012-07-30 11:02:50