php 检查时间是否在范围内

php check if time is between range

我正在寻找一种方法来检查时间是否在特定时间范围内。

示例: 时间跨度:22:30至04:20

如果 13:23 介于两者之间,我如何轻松地检查 php?

只是时间的问题,当天应该没有影响。

首先定义两种情况:

  • 同一天。如果 T1 <= Tx 且 Tx <= T2,则 Tx 在 T1 和 T2 之间。

  • 不同的日子。如果 T1 <= Tx or Tx <= T2.

    那么 Tx 在 T1 和 T2 之间

如何区分这两种情况:如果 T1 < T2,则为同一天。其他不同的日子。

极端情况:21:30 是否在 20:30 和 20:31 第二天 之间?当然可以。但是这两种情况,“一天的20:30到当天的20:31”和“一天的20:30和第二天的20:31”是无法区分,因此有可能 - 根据您的时间来源 - 无论您设计什么测试,它仍然会失败

当然,如果您始终处于“同一天”场景,则永远不会出现此错误——但您将无法接受“22:30 至 04:20”示例在你的问题中。

function between($time, $time1, $time2) {
    if ($time1 < $time2) {
        // same day
        // 09:30 <= 10:27 <= 12:15  : $time is between
        return ($time1 <= $time) && ($time <= $time2);
    }
    // time1 is day1, time2 is next day
    // 22:30 <= 23:30 or 02:15 <= 04:30: both 22:30 and 02:15
    // are in the [ 22:30...04:30 ] range
    // 06:27 is neither >= 23:30 nor <= 02:15, so is out of range
    return ($time1 <= $time) || ($time <= $time2);
}