如何获得 Carbon/Carbon 的住宿天数?

How do I get number of nights with Carbon/Carbon?

我正在尝试使用 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 一起使用 class

    $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 一起使用 Datetime 的所有方法。

例子

$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。