【发布时间】:2018-12-15 02:06:09
【问题描述】:
需要建议我需要以哪种方式解决过滤问题。
我有体育赛事的记录,每个体育赛事都有赛事开始时间和赛事结束时间的列:
事件 #1
开始时间:09:00 (time_from)
结束时间:12:00 (time_to)
数据库中时间的格式为 HH:MM。
然后我有过滤页面,用户可以在其中设置事件时间的时间范围,以显示 09:45 - 11:45 发生的所有事件)
我试图通过将过滤器输入和数据库值转换为秒来过滤用户指定范围内的事件,但它没有完全工作:
$i = 0;
foreach($sport_events as $event)
{
// check if the event is in user specified range
// $filter_time is already converted to strtotime previously
if( strtotime($event['time_from']) >= $filter_time_from_seconds && strtotime($event['time_to']) <= $filter_time_to_seconds )
{
// do nothing
} else {
// unset sport event
unset($event[$i]);
}
$i++;
}
如果用户输入 09:00 和 12:00,它可能会输出结果,但不是在范围内的例如 10:00 和 11:00。
有什么想法吗?
【问题讨论】:
-
你能输出这些变量的值吗?
-
如果我们按照我们的例子,那么 $filter_time_from_seconds 和 $filter_time_to_seconds 是 10:00:00 1530860400, 11:00:00 1530864000
-
抱歉耽搁了... $event['time_from'] 值是 9:00 ?还是我弄错了?
-
09:00 不是 9:00 是正确的
-
因此,如果事件时间是 9:00,过滤时间是 9:45,那么您将找不到匹配项。
标签: php datetime time filter filtering