$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
如何检查$ now的时间是否在时间范围内?
$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
$time = $now->format('H:i:s');
if ($time >= $start && $time <= $end) {
...
}
应该这样做,但不考虑日期
试试这个:
$time = Carbon::now();
$morning = Carbon::create($time->year, $time->month, $time->day, 8, 0, 0); //set time to 08:00
$evening = Carbon::create($time->year, $time->month, $time->day, 18, 0, 0); //set time to 18:00
if($time->between($morning, $evening, true)) {
//current time is between morning and evening
} else {
//current time is earlier than morning or later than evening
}
true
中的$time->between($morning, $evening, true)
检查$time
是否介于和包括$morning
和$evening
之间。如果你写false
而不是检查它是否在两次之间但不包括。
实际上,你可以离开true
,因为它是默认设置的,不需要。
查看here,了解有关如何与Carbon比较日期和时间的更多信息。
$restrictStartTime = Carbon::createFromTime(22, 0, 0); //carbon inbuild function which will create todays date with the given time
$restrictEndTime = Carbon::createFromTime(8, 0, 0)->addDays(1); //this will create tomorrows date with the given time
$now = Carbon::now();
if($now->gt($restrictStartTime) && $now->lt($restrictEndTime)) {
.....
}
请尝试下面的代码,
$start = '22:00:00';
$end = '08:00:00';
$now = Carbon::now('UTC');
$nowTime = $now->hour.':'.$now->minute.':'.$now->second;
if(strtotime($nowTime) > strtotime($start) && strtotime($nowTime) < strtotime($end) ) {
echo 'YES';
} else {
echo 'NO';
}
<?php
$now = date("H");
if ($now < "20") {
echo "Have a good day!";
}
克里斯试图指出的是,如果结束时间超过午夜,那么你必须考虑到这一点。
这不是最干净的方法,但这是一种似乎有用的方法。
private function isNowBetweenTimes($timezone, $startDateTime, $endDateTime) {
$curTimeLocal = Carbon::now($timezone);
$startTime = $curTimeLocal->copy();
$startTime->hour = $startDateTime->hour;
$startTime->minute = $startDateTime->minute;
$endTime = $curTimeLocal->copy();
$endTime->hour = $endDateTime->hour;
$endTime->minute = $endDateTime->minute;
if ($endTime->lessThan($startTime))
$endTime->addDay();
return ($curTimeLocal->isBetween($startTime, $endTime));
}
此示例仅关注小时和分钟而不是秒,但您也可以轻松复制它。关键是比较开始和结束时间,然后将它们与当前时间进行比较,如果结束时间小于开始时间,则添加一天到结束时间。
试试这个 :
$start = 22; //Eg. start hour
$end = 08; //Eg. end hour
$now = Carbon::now('UTC');
if( $start < $now->hour && $now->hour < $end){
// Do something
}