我正在尝试使用 Laravel 构建酒店预订模块。我不知道如何计算使用Carbon的住宿天数。例如,我有两个日期:
$date1 = Carbon::parse('2019-07-25 12:00:00');
$date2 = Carbon::parse('2019-07-29 10:00:00');
$days = $date2->diffInDays($date1);
$nights = ??
我怎样才能知道这两个日期之间有多少晚?
我正在尝试使用 Laravel 构建酒店预订模块。我不知道如何计算使用Carbon的住宿天数。例如,我有两个日期:
$date1 = Carbon::parse('2019-07-25 12:00:00');
$date2 = Carbon::parse('2019-07-29 10:00:00');
$days = $date2->diffInDays($date1);
$nights = ??
我怎样才能知道这两个日期之间有多少晚?
您可以将它与 DateTime 类一起使用
$date1 = new DateTime('2019-07-25 12:00:00');
$date2 = new DateTime('2019-07-29 10:00:00');
$nightsDays = $date2->diff($date1)->format("%a");
如果您将到达日的时间设置为 00:00,则可确保正确计算间隔内的夜数。Carbon 是 DateTime 的扩展。您也可以将所有日期时间方法与 Carbon 一起使用。
例子
$dateCheckin = new DateTime('2019-07-25 18:00:00');
$dateCheckout = new DateTime('2019-07-26 10:00:00'); //next Day Morning
$nightsDays = $dateCheckin
->setTime(0,0)
->diff($dateCheckout)
->format("%a")
;
echo $nightsDays; //1
如果没有将时间设置为 00:00,您将收到此数据的错误结果 0。