Laravel中判断当前时间是否在22:00至次日06:00之间的问题解决
解决Carbon判断跨天时间区间(22:00-次日06:00)返回false的问题
我尝试了网上所有相关解决方案,但结果始终为false。需要准确判断当前时间是否处于同一天的晚上10点(22:00)至次日早上6点(06:00)之间,但所有方案都返回false!例如,判断8:00至13:00之间是正常工作的,唯独上述跨天区间不行。
以下是我最初尝试的代码:
@php $now = Carbon::now(); $start = Carbon::createFromTimeString("22:00 pm"); $end = Carbon::createFromTimeString("06:00 am"); @endphp @if ($now->between($start, $end)) //approved @else //not approved @endif
问题解决后的代码
经过调整,以下是验证有效的解决方案,供遇到同类问题的开发者参考:
@php $now = Carbon::now(); $curr = date('a'); //返回am或pm $start = Carbon::createFromTimeString("22:00"); //初始化开始时间 $end = Carbon::createFromTimeString("06:00"); //初始化结束时间 if ($curr == 'am'){ $start = Carbon::createFromTimeString("22:00")->subDay(); //如果是上午/凌晨,将开始时间设为前一天的22:00 } else{ //如果是下午/晚上,将结束时间设为次日的06:00 $end = Carbon::createFromTimeString("06:00")->addDay(); } @endphp @if ($now->between($start, $end, true)) //approved @else //not approved @endif
注:该代码已多日验证,确认无误。
内容的提问来源于stack exchange,提问作者welid WG
相关产品推荐
相关产品推荐

