【问题标题】:Laravel Carbon, How to format to compare datetime?Laravel Carbon,如何格式化以比较日期时间?
【发布时间】:2017-04-21 12:19:18
【问题描述】:

我正在开发一个预订应用程序,我从用户那里得到一个开始和结束(日期时间),并检查这段时间(开始和结束)是否与数据库列(开始和结束)相交,所以我需要比较 @987654321 @ 和 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']);}
    }
}

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

protected $dates = ['start', 'end'];

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

【问题讨论】:

    标签: php laravel datetime php-carbon


    【解决方案1】:

    看起来你已经为 $end 变量创建了 Carbon 实例

    $end = Carbon::parse($end);
    

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

    $end->between($bstart, $bend);
    

    如果这不起作用,dd($end) 以及 dd($bstart)dd($bend) 以确保它们都是 Carbon 对象。

    【讨论】:

    猜你喜欢
    • 2016-03-24
    • 2016-02-28
    • 2016-12-01
    • 2020-12-14
    • 2018-03-13
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    相关资源
    最近更新 更多