我的控制器中有以下代码。我想找到两个日期之间的差异(从和到),这样我就可以得到n之间的天数,将它保存到数据库中。
class LeaveController extends Controller
{
public function ApplyLeave(Request $request){
$days = $request->datepicker->diff($request->datepicker1);
Auth::user()->sent()->create([
'tel' => $request->tel,
'email' => $request->email,
'start' => Carbon::parse($request->datepicker),
'end' => Carbon::parse($request->datepicker1),
'supervisor' => $request->supervisor,
'department' => $request->department,
'name' => $request->name,
'adress' => $request->adress,
'days' => $days,
]);
return view('home');
}
到目前为止,我得到以下错误:
调用字符串
上的成员函数diff()
如何解决这个问题?
答案 0 :(得分:1)
你需要:
$d1 = new Carbon($request->datepicker);
$d2 = new Carbon($request->datepicker1);
$days = $d1->diff($d2)->days;
请注意,您需要 - >天才能获得实际天数。
请注意,您会遇到时间问题。您可能希望 - > setTime(0,0,0)以获取2个日期之间的日期。
请注意,您的格式可能不是标准格式。在这种情况下使用:
$format = 'm\d\Y';
$d1 = Carbon::createFromFormat($request->datepicker,$format);
$d2 = Carbon::createFromFormat($request->datepicker1,$format);
$days = $d1->diff($d2)->days;
答案 1 :(得分:1)
Man,当基本的PHP函数可以为您提供最佳解决方案时,不要使用Carbon。使用OOP:
$datetime1 = new DateTime($request->datepicker);
$datetime2 = new DateTime($request->datepicker1);
$interval= $datetime1->diff($datetime2);
$days = $interval->format('%a');
如果您好奇为什么会收到该错误,那么因为您正在使用diff()
函数,该函数将日期对象作为参数并且您提供了纯字符串。