You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 01:45:33