Я пытаюсь заставить некоторый код работать, чтобы определить, между какими парами значений времени находится текущее время. Код, который я использую, приведен ниже. Однако я продолжаю получать сообщение «NO MATCH», хотя текущее время попадает в один из диапазонов. Не знаю, где я ошибаюсь.
//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. Мне это кажется достаточно простым, но я просто не могу заставить реализацию кода работать, как бы я ее ни упрощал.
$current_time = DateTime::...
? $current_time УЖЕ является объектом даты и времени... - person Marc B   schedule 22.04.2014echo $current_time->format('Y-m-d H:i:s')
) - person John Conde   schedule 22.04.2014$time2End < $time2Start
, актуален. Попробуйте свой код с кучей разных значений для$current_time
и посмотрите, где он не работает. - person Kryten   schedule 22.04.2014$current_time = '16:15:26';
$current_time = DateTime::createFromFormat('H:i:s', $current_time);
, то это работает без проблем. - person Jason   schedule 22.04.2014