如何获得 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。
我正在尝试使用 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。