Laravel Carbon,如何格式化比较日期时间?

Bes*_*mry 1 php datetime laravel php-carbon

我工作的一个预订的应用程序,我从用户那里得到一个开始和结束(日期时间),并检查这个期间(开始和结束),与数据库中的列的交叉点(开始和结束),所以我需要比较Input['start'],并Input['end']与数据库,所以我用过Carbon::create($inputstart)->between($start ,$end));但它总是给错误的"意外数据"和"尾随数据"

这是检查和存储输入的控制器方法

public function store(Request $request,$yard,$court)
{
    $start =$request->input("start");
    $end =$request->input("end");
    $courtCalendar = CalendarEvent::where('court_id',$court)->get();
    $start= Carbon::parse( $start);
    $end = Carbon::parse($end);
    foreach ($courtCalendar as $booked) {    
       $bend= Carbon::parse($booked->end);  
       $bstart= Carbon::parse($booked->start);
       dd(Carbon::create($end)->between($bstart ,$bend));
        if (!Carbon::create($start)->between($bstart ,$bend)){
            if (!Carbon::create($end)->between($bstart ,$bend)) {
    $calendar_event = new CalendarEvent();
    $calendar_event->user_id          = Auth::user()->id;   
    $calendar_event->court_id         = $court; 
    $calendar_event->title            = $request->input("title");
    $calendar_event->start            = $start;
    $calendar_event->end              = $end;
    $calendar_event->status           = 0;
    $calendar_event->save();
    return redirect()->back()
    ->with(['header'=>'Success!','class' =>'alert alert-success','message'=> 'booked successfully.',
        'calendar'=>$calendar_event]);
            }else
            {return redirect()->back()
                ->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time end time is occupied']);}
        }else
            {return redirect()->back()
                ->with(['header'=>'Warning!','class' =>'alert alert-warning','message'=> 'cannot book at this time start time is occupied']);}
    }
}
Run Code Online (Sandbox Code Playgroud)

我还将模型中的数据库列声明为日期

protected $dates = ['start', 'end'];
Run Code Online (Sandbox Code Playgroud)

如何从HTML表单和数据库"datetime"传递日期时间格式,以便Carbon可以进行"之间"比较?

MMM*_*roy 5

看起来您已经使用该行为$ end变量创建了Carbon实例

$end = Carbon::parse($end);
Run Code Online (Sandbox Code Playgroud)

所以,如果你想确定$ end是否在$ bstart和$ bend之间,那么你会希望你的行看起来像这样

$end->between($bstart, $bend);
Run Code Online (Sandbox Code Playgroud)

如果这也不行,dd($end)沿dd($bstart)dd($bend)确保它们都是碳的对象.