今天或以前的碳

Carbon today or previous dates

我试图限制用户使用 carbon 和 laravel 7 将日期设置为小于今天的日期。 我的日期格式为 02-02-2020。我不断收到此错误 Call to a member function lessThanOrEqualTo() on integer".

case 4:

                        $todayDate = Carbon::now();

                        if (strlen($parts[3]) != 8) {

                            unset($session[3]);

                            $response = "CON C4C\nEnter a valid date of contact. DDMMYYYY eg  01122020";

                        } else {

                            try {

                                $session['date_of_contact'] = Carbon::createFromFormat('dmY', $parts[3])->format('Y-m-d ');

                                $this->setSession($session);

                                $userdate = strtotime($session['date_of_contact']);

                                if($userdate->lessThanOrEqualTo($todayDate)) {

                                    unset($session[3]);

                                    $response = "CON C4C\nFuture dates are invalid";
                                }

                                $response = $this->sessionOpeningTag . "What is the source of exposure?\n1 Patient\n2 Colleague\n3 Community\n4 Home\n5 Unknown";


                            } catch (Exception $exception) {

                                $response = $this->sessionClosingTag . "You have entered an invalid date";

                                $this->deleteSession($session);

                            }
                        }    

                        break;  

对于将字符串日期解析为 Carbon 对象,有一种乐观的方法。

$userdate = Carbon::parse($session['date_of_contact']);

悲观的做法,你会指定格式。

 $userdate = Carbon::createFromFormat('d-m-Y', $session['date_of_contact']);

只需使用:

$session['date_of_contact']->lessThanOrEqualTo(Carbon::today())

并删除 $todayDate$userdatestrtotime