diffInHours函数返回零 - 碳

问题描述 投票:0回答:2

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

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

dd($totalDuration);// 0
php laravel php-carbon
2个回答
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
投票

在你的代码中,当你执行$ startTime-> addHours(10)并将其分配给finishTime时,startTime也会添加10小时,然后分配给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
© www.soinside.com 2019 - 2024. All rights reserved.