Laravel Carbon - 如何添加分钟

时间:2018-01-08 17:25:47

标签: php laravel php-carbon

我有一个表格,我要求4小时,早上开始和结束时间,下午也一样。

我使用Carbon但是如果我放30分钟就会返回0,它会向下舍入。

我尝试使用diffInHoursdiffInMinutes,但它会以两种方式向下舍入。

这是我的代码示例:

$startTime1 = Carbon::createFromFormat('H:s', '09:00');
$startTime2 = Carbon::createFromFormat('H:s', '10:30');
$startTime3 = Carbon::createFromFormat('H:s', '14:00');
$startTime4 = Carbon::createFromFormat('H:s', '16:00');
$morningTime = $startTime2->diffInHours($startTime1);
$afternoonTime = $startTime4->diffInHours($startTime3);

$total = $morningTime + $afternoonTime;

$morningTime中,它返回1并返回1,30。 在$afternoonTime中,它返回2并且它是正确的。

如果我与diffInMinutes一起使用,则会在$morningTime中添加60,在$afternoonTime中添加120。早上时间又错了。

我该如何解决?

谢谢

1 个答案:

答案 0 :(得分:1)

您正在以Carbon格式指定秒H:s,请使用H:i

$startTime1 = Carbon::createFromFormat('H:i', '10:30');

并且您可以使用format()方法格式化时间差异

$morningTime = $startTime2->diff($startTime1)->format('%H:%I');

修改:无法合并dateInterval实例,但您仍然可以使用时间戳:

$total_in_seconds = ($startTime2->timestamp - $startTime1->timestamp) + ($startTime4->timestamp - $startTime3->timestamp);

$total = Carbon::createFromTimestamp($total_in_seconds)->format('h:i');