我正在编写脚本,我必须检查时间范围是否介于两次之间,而不管日期如何。

例如,我有两个日期:

$from = 23:00
$till = 07:00

我有以下时间检查:
$checkFrom = 05:50
$checkTill = 08:00

我需要创建一个脚本,如果一个检查值在$ from / $ till范围之间,它将返回true。在此示例中,该函数应返回true,因为$ checkFrom在$ from / $ till范围之间。但以下几点也应成立:
$checkFrom = 22:00
$checkTill = 23:45

最佳答案

试试这个功能:

function isBetween($from, $till, $input) {
    $f = DateTime::createFromFormat('!H:i', $from);
    $t = DateTime::createFromFormat('!H:i', $till);
    $i = DateTime::createFromFormat('!H:i', $input);
    if ($f > $t) $t->modify('+1 day');
    return ($f <= $i && $i <= $t) || ($f <= $i->modify('+1 day') && $i <= $t);
}

demo

07-24 16:04