问题描述
我正在寻找一种方法来检查时间是否在特定时间范围内。
示例: 时间跨度: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);
}