2010-09-09 96 views
1

选择当前时间。如果我使用PHP代码,如:PHP细胞

for ($i = 1; $i <= 24; $i++) 
{ 
$timetable=strftime("%X", mktime(0, 0, $hour[$i], $month, $day, $year)); 
} 

以获取当天看起来像时间表:

time | 
---------- 
05:09:23 | 
---------- 
07:23:18 | 
---------- 
11:55:41 | 
---------- 
14:01:32 | 
---------- 

我想强调小区的情况下打印的时间包括:当前时间(如果当前时间是9:23:00,高亮单元格将是打印时间为07:23:18的单元格,如果当前时间为13:59:06,高亮单元格将为11:55:41)

我该怎么做?

回答

2

使用此功能可以做到这一点:

$thisID = 0; 
for ($i = 1; $i <= 24; $i++) 
{ 
    $tt = mktime(0, 0, $hour[$i], $month, $day, $year); 
    $timetable = strftime("%X", $tt); 

    if($thisID == 0 && (time() - $tt) >= 0) 
     $thisID = $i; 
} 

现在$thisID为您提供了所需的行。用它来突出显示行。

+0

谢谢,但我geting这个错误“致命错误:函数名称必须是一个字符串”在行中是“if($ time() - $ tt> = 0)”。可能是什么问题? – Sergio 2010-09-09 20:34:57

+0

因为我总是得到1 :( – Sergio 2010-09-09 20:43:38

+0

我几分钟后更新了代码,我发布了它。你有没有尝试新的代码。 – shamittomar 2010-09-10 04:18:21

0

有一个date_diff()函数可以用来确定哪一个最接近。 link date_diff或者,如果此信息来自数据库,则可以使用数据库的日期/时间处理函数来返回Now()和作为列被撤回的日期之间的时间差。

0

最好的办法做到这一点在我看来是将时间存储在unix时间戳或从午夜开始秒钟。通过这种方式,您可以对数据进行排序。

要获得最接近的记录,您需要执行2个查询。

Select time from times where time > $value order by time desc limit 1 
Select time from times where time < $value order by time asc limit 1 

现在将这2个结果与$ value进行比较并返回最接近的一个。

尽管此方法需要2个查询并使用大于/小于语句,但我认为ist比检索所有数据更快。

希望这会有所帮助!