我想要检查当前时间是否在两个时间之间。
我浏览了多个脚本,但所有的脚本都包括日期或太过复杂,或者只计算整点时间,例如6点或7点,而我需要检查小时和分钟。
我希望能得到帮助,我需要的脚本设置是:
$begintime = 8:30;
$endtime = 17:00;
if(currenttime is between $begintime and $endtime) {
// do something
} else {
// do something else
}
我想要检查当前时间是否在两个时间之间。
我浏览了多个脚本,但所有的脚本都包括日期或太过复杂,或者只计算整点时间,例如6点或7点,而我需要检查小时和分钟。
我希望能得到帮助,我需要的脚本设置是:
$begintime = 8:30;
$endtime = 17:00;
if(currenttime is between $begintime and $endtime) {
// do something
} else {
// do something else
}
使用 DateTime 对象进行定义。它将内部使用当前日期,这样就可以在比较时忽略它。
$now = new DateTime();
$begin = new DateTime('8:00');
$end = new DateTime('17:00');
if ($now >= $begin && $now <= $end)
高级: 为了在执行期间即使日期更改(DateTime
对象可能存在1天偏移日期),也要使其无懈可击,重置$now
到$start
和$end
DateTime
对象的日期为:$y = (int) $now->format('Y');
$m = (int) $now->format('n'); // n is the month without leading zeros
$d = (int) $now->format('d');
$begin->setDate($y, $m, $d);
$end->setDate($y, $m, $d);
你也可以查看Brick\DateTime
扩展,其中包含LocalTime
类,它会忽略日期。
看看PHP的DateTime函数。
$now = new Datetime("now");
$begintime = new DateTime('08:30');
$endtime = new DateTime('17:00');
if($now >= $begintime && $now <= $endtime){
// between times
echo "yay";
} else {
// not between times
echo "nay";
}
检查一下。我测试了这段代码,它运行良好。
date_default_timezone_set("Asia/Kolkata");
$current_time = date("h:i a");
$begin = "9:00 am";
$end = "5:00 pm";
$date1 = DateTime::createFromFormat('H:i a', $current_time);
$date2 = DateTime::createFromFormat('H:i a', $begin);
$date3 = DateTime::createFromFormat('H:i a', $end);
if ($date1 > $date2 && $date1 < $date3) {
echo 'Here';
} else {
echo 'Not';
}