【问题标题】:How do I get number of nights with Carbon/Carbon?如何获得 Carbon/Carbon 的住宿天数?
【发布时间】:2019-11-24 06:32:37
【问题描述】:

我正在尝试使用 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 = ??

我如何才能知道这两个日期之间有多少晚?

【问题讨论】:

    标签: php laravel date php-carbon laravel-6.2


    【解决方案1】:

    您可以将它与 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");
    

    【讨论】:

    • 技术上是正确的。但是有没有办法将它与 Carbon 一起使用?
    • 没关系,我刚刚发现 Carbon 基本上是 DateTime 函数的增强版本。意味着基本上我可以打电话给Carbon::parse()而不是new DateTime
    • 解决方法不正确。它提供了天数的差异,而不是间隔中的夜数。
    【解决方案2】:

    如果您将到达日的时间设置为 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-03
      相关资源
      最近更新 更多