diffInHours 函数 returns 零 - 碳

diffInHours function returns zero - Carbon

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

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

dd($totalDuration);// 0

在您的代码中,当您执行 $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

请尝试以下代码

$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 因为它是一个碳对象,任何附加到该对象的方法都会修改它的所有当前对象。