我需要找到两个日期之间的区别。说我有2017-02-01 - 2017-01-01。两天之间的天数是输出
$formatted_dt1=Carbon::parse($a->date)->format('Y-m-d');
$formatted_dt2=Carbon::parse($c->dt)->format('Y-m-d');
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
如果我提供上述代码,我会收到错误
FatalThrowableError in ReportsController.php line 67:
Call to a member function diffInDays() on string
答案 0 :(得分:2)
Carbon format()
函数将转换为字符串,因此请删除format('Y-m-d')
,如下所示:
$formatted_dt1=Carbon::parse($a->date);
$formatted_dt2=Carbon::parse($c->dt);
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
希望你理解。您可以查看文档here。
答案 1 :(得分:2)
未经测试但请尝试此操作:
$formatted_dt1=Carbon::parse($a->date);
$formatted_dt2=Carbon::parse($c->dt);
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
答案 2 :(得分:1)
你可以这样做,
$formatted_dt1=Carbon::parse($a->date);
$formatted_dt2=Carbon::parse($c->dt);
$date_diff=$formatted_dt1->diffInDays($formatted_dt2)->format('Y-m-d');
首先从两个日期中获取差异,然后格式化日期。
答案 3 :(得分:0)
您只能在应用日期格式之前在Carbon实例上使用diffInDays()
函数。
$formatted_dt1=Carbon::parse($a->date);
$formatted_dt2=Carbon::parse($c->dt);
现在你应该可以比较:
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
如果您想应用日期格式,请尝试以下方法进行比较:
$date_diff=$formatted_dt1->diffInDays($formatted_dt2)->format('Y-m-d');
请查看此document以获取更多详细信息。
答案 4 :(得分:0)
您遇到了此问题,因为您将日期存储为字符串在数据库中。您可以在原始laravel的diffInDays($updated_at)
和diffInDays($created_at)
上执行created_at
或updated_at
,因为Laravel默认已经将它们存储为日期,因此,当您从数据库中获取它们时,laravel将其作为出生实例提供给您(尝试dd($created_at)
)。
要解决您的问题,请转到您的模型并将其用于将日期列转换为日期
protected $dates = [
'my_date',
'my_other_date'
]
然后,您现在可以做
$formatted_dt1=Carbon::parse($a->date)->format('Y-m-d');
$formatted_dt2=Carbon::parse($c->dt)->format('Y-m-d');
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
或者您可以使用
Carbon\Carbon::parse($formatted_dt1)->diffInDays()
答案 5 :(得分:0)
请确保use Carbon\Carbon;
diffInDays
。diffInHours
用于小时。diffInMinutes
用于分钟。DiffInSeconds
用于秒。 $formatted_dt1=Carbon::parse('2019-09-26 00:00:00');
$formatted_dt2=Carbon::parse('2019-09-28 00:00:00');
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);
echo $date_diff.' Day '; //2 days
$hours_diff = $formatted_dt1->diffInHours($formatted_dt2);
echo $date_diff.' Hours '; //48 Hours
$Minutesdiff = $formatted_dt1->diffInMinutes($formatted_dt2);
echo $Minutesdiff.' Minutes '; //2880 Minutes
$seconddiff = $formatted_dt1->DiffInSeconds($formatted_dt2);
echo $seconddiff.' Seconds '; //172800 Seconds
exit;
答案 6 :(得分:0)
如果删除 format() carbon format() 它将转换字符串,因此删除它,它会起作用,
$formatted_dt1=Carbon::parse($a->date);
$formatted_dt2=Carbon::parse($c->dt);
$date_diff=$formatted_dt1->diffInDays($formatted_dt2);