【发布时间】:2021-06-19 13:42:19
【问题描述】:
我正在寻找一种方法来检查某个时间是否在某个时间范围内。
示例: 时间跨度:22:30到04:20
如果介于 13:23 之间,我如何轻松检查 php?
只是关于时间,当天不应该起作用。
【问题讨论】:
我正在寻找一种方法来检查某个时间是否在某个时间范围内。
示例: 时间跨度:22:30到04:20
如果介于 13:23 之间,我如何轻松检查 php?
只是关于时间,当天不应该起作用。
【问题讨论】:
首先定义两种情况:
同一天。如果 T1
不同的日子。如果 T1 或 Tx
如何区分两种情况:如果 T1
极端情况:是在第二天的 20:30 到 20:31 之间的 21:30?当然是的。但是“一天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);
}
【讨论】: