//по феншую
function checkDateIsBetween(string $data, string $timeFrom, string $timeTo): bool
{
$dateObject = new DateTime($date);
$day = $dataObject->format('Y-m-d');
$from = (new DateTime($day . ' ' . $timeFrom))->getTimestamp();
$to = (new DateTime($day . ' ' . $timeTo))->getTimestamp();
$ts = $dateObject->getTimestamp();
return ($ts < $to) && ($ts > $from);
}
//по быстроляну
function checkDateIsBetween2(string $date, string $timeFrom, string $timeTo): bool
{
$ts = strtotime($date);
list($day, $time) = explode($date);
return ($ts > strtotime($day . ' ' . $timeFrom)) && ($ts < strtotime($day . ' ' . $timeTo));
}
$date = '2019-07-01 16:22:01';
$timeFrom = '17:40:00';
$timeTo = '23:59:00';
$dateIsBetween = checkDateIsBetween($date, $timeFrom, $timeTo);
$dateIsBetween2 = checkDateIsBetween2($date, $timeFrom, $timeTo);
Как можно заметить, идея состоит в том, чтобы ко времени начала и конца "пристроить" день заданной даты, а затем получить и сравнить временные метки.