diffInHours函数返回零-Carbon

时间:2018-09-19 07:03:48

标签: php laravel php-carbon

我正在使用laravel和carbon库。 我想在几个小时内得到不同的时间。 但是diffInHours返回零。

$_startTime = $startTime = \Carbon\Carbon::parse('2018-09-18 21:12:35');
            $finishTime = $_startTime->addHours(10);
            $totalDuration = $startTime->diffInHours($finishTime);

dd($totalDuration);// 0

2 个答案:

答案 0 :(得分:2)

请尝试以下代码

$startTime  = Carbon::parse('2018-09-18 21:12:35');
$finishTime = Carbon::parse($startTime)->addHours(10); 
$totalDuration = $startTime->diffInHours($finishTime);
dd($totalDuration);

注意:因为$ startime会使用addHours(10)修改开始时间,因此请再次对其进行解析。

说明:

$startTime  = Carbon::parse('2018-09-18 21:12:35');

在此创建了碳对象。

$finishTime = Carbon::parse($startTime)->addHours(10);

如果我使用以下代码修改$finishTime

$startTime  = Carbon::parse('2018-09-18 21:12:35');
$finishTime = $startTime->addHours(10);

dd($startTime,$finishTime)就可以看到$startTime$finishTime都输出相同的数据。 这里$startTime创建了一个碳对象,我们需要再次解析$startTime,因为它是一个碳对象,任何附加到此对象的方法都会修改其所有当前对象。

答案 1 :(得分:1)

在代码中,当您执行$ startTime-> addHours(10)并将其分配给finishTime时,还会在10个小时内添加startTime,然后将其分配给finishTime。因此,在此过程中,两者相同,当您将它们进行比较时,结果为零。因此您需要分别维护两个变量,如下所示,希望这对您有所帮助。

$startTime = \Carbon\Carbon::parse('2018-09-18 21:12:35');
$finishTime = \Carbon\Carbon::parse('2018-09-18 21:12:35');
$finishTime->addHours(10);
$totalDuration = $startTime->diffInHours($finishTime);
dd($totalDuration);// 10