我正在尝试获取一些代码来检测当前时间介于哪些时间值对之间。我正在使用的代码如下。然而,即使当前时间落在其中一个范围内,我仍然会得到"不匹配"。不确定我哪里错了。
//GET CURRENT TIME
$tz_object = new DateTimeZone('America/New_York');
$current_time = new DateTime();
$current_time->setTimezone($tz_object);
//SET TIME RANGE PAIRS
$time1Start = '08:00:00';
$time1End = '16:59:59';
$time2Start = '17:00:00';
$time2End = '07:59:59';
//FORMAT TIMES
$current_time = DateTime::createFromFormat('H:i:s', $current_time);
$time1Start = DateTime::createFromFormat('H:i:s', $time1Start);
$time1End = DateTime::createFromFormat('H:i:s', $time1End);
$time2Start = DateTime::createFromFormat('H:i:s', $time2Start);
$time2End = DateTime::createFromFormat('H:i:s', $time2End);
//TIME 1 SLOT
if ($current_time >= $time1Start && $current_time <= $time1End)
{
echo 'RANGE 1';
}
//TIME 2 SLOT
elseif ($current_time >= $time2Start && $current_time <= $time2End)
{
echo 'RANGE 2';
}
else
{
echo 'NO MATCH';
}
**更新**
所以当我开始转换时区时,这似乎开始在我身上失败了。如果我传递一个原始时间值,它就可以正常工作。然而,当我看到这一点时,我觉得我想做的事情太复杂了。本质上,我只需要确定当前时间是否在两个值之间。就我而言,我不在乎今天、明天、昨天等。我只需要知道16:42是在08:00到15:00之间,还是在15:01到07:59之间。这对我来说似乎很简单,但无论我如何简化,我都无法使代码实现正常工作。
这是您可以轻松检查的,而不是您的代码,
if(date('H:i:s') == $your_time){
//your code;
}