DateTime::__construct() 期望参数 1 为字符串,给定的对象

DateTime::__construct() expects parameter 1 to be string, object given

我正在尝试计算两个日期。当我放置

$from = Carbon::createFromFormat('m-d-Y H:i:s', '02-10-2017 10:02:20');

代码我得到了价值,但是当我从 mysql

中放置数据时
$from = Carbon::createFromFormat('m-d-Y H:i:s', $from_date); 

找不到数据,也无法计算起止日期

Controller.php

public function circulerMatchView()
    {
        $user_id = Auth::user()->id;

        $resume_exp = Experience::select('user_exp_keyword')
                    ->where('user_id','=',$user_id)
                    ->get();
        $from_date = Experience::selectRaw('exp_from_date')
                    ->where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->get();
        $to_date = Experience::selectRaw('exp_to_date')
                    ->where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->get();

             $from = DateTime::createFromFormat('m-d-Y H:i:s', $from_date);
             $to = Carbon::createFromFormat('m-d-Y H:i:s', $to_date);
            $realAge = Carbon::parse($to)->diff(Carbon::parse($from))->format('%y');   
            print_r($realAge);
}

如果 $from_date 是 02-21-2017 并且 $to_date 是 02-21-2018

结果是 1 年

您正在使用 get 获取数组。用您的代码替换这两行并检查。它只会获取字段数据值。

$from_date = Experience::
                    where('user_id','=',$user_id)
                    ->orderBy('exp_from_date','desc')
                    ->take(1)
                    ->pluck('exp_from_date')[0];
$to_date = Experience::
                where('user_id','=',$user_id)
                ->orderBy('exp_to_date','desc')
                ->take(1)
                ->pluck('exp_to_date')[0];

检查此 documentation 以了解有关 pluck 的详细信息。