首页 > 解决方案 > 如何在laravel中减去并获得时间输入之间的差异?

问题描述

我正在 laravel 中构建一个小应用程序,该应用程序有一个日期和时间输入,我用它来计算给定任务的价格。我已经成功计算了日期差异,现在我正在尝试获取两个选定时间之间的差异,即 PM 和 AM 格式,但我被卡住了。我想要实现的是,当用户选择时间时,如下例所示;我得到了小时的时差,如果是 3 小时或更多小时,我会给予一定的惩罚,请帮忙!

 array:4 [▼
  "pickup_date" => "2019-09-13"
  "pickup_time" => "11:37 AM"
  "dropoff_date" => "2019-09-14"
  "dropoff_time" => "10:37 PM"
 ]

标签: phplaraveldatephp-carbonlaravel-6

解决方案


你可以使用卡本diff()

在修补程序中,它会像

$ php artisan tinker
Psy Shell v0.9.9 (PHP 7.3.5 — cli) by Justin Hileman
>>> \Carbon\Carbon::parse('2019-09-13 11:37 AM')->diff(\Carbon\Carbon::parse('20
19-09-11 10:23 PM'))
=> DateInterval {#3080
     interval: - 1d 13:14:00.0,
   }
>>>

您可以在代码中使用它。

小时差异

> \Carbon\Carbon::parse('2019-09-13 11:37 AM')->diffInHours(\Carbon\Carbon::parse('2019-09-11 10:2
3 PM'))
=> 37

你的 if 条件可以是

$diff = \Carbon\Carbon::parse('2019-09-13 11:37 AM')->diffInHours(\Carbon\Carbon::parse('2019-09-11 10:2
    3 PM'));

接着

if ( $diff > 3 ) {
    // do something
} else {
    // do something else
}

推荐阅读