我有一个表格,我要求4小时,早上开始和结束时间,下午也一样。
我使用Carbon
但是如果我放30分钟就会返回0,它会向下舍入。
我尝试使用diffInHours
和diffInMinutes
,但它会以两种方式向下舍入。
这是我的代码示例:
$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。早上时间又错了。
我该如何解决?
谢谢
答案 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');