Laravel碳时间差
Laravel Carbon difference in time
所以我有这个 table 有开始时间和结束时间,我正在计算小时数。
这工作得很好,除非结束时间是午夜。
我的数据库中有用于开始和结束的 TIME 字段。
这是计算
@php
$start = \Carbon\Carbon::parse($person->clocked_in_at);
$end = \Carbon\Carbon::parse($person->clocked_out_at);
$diff = $start->diff($end)->format('%H:%I');
@endphp
如果开始时间为 07:30:00,结束时间为 13:00:00,则正确计算为 05:30 小时。但是,如果开始时间为 23:30:00,结束时间为 00:00:00,应该计算为 30 分钟,则计算为 23:30:00
我在这里错过了什么?
你需要添加这个year-month-day
像这样:
$start = \Carbon\Carbon::parse('2015-5-5 23:30:00');
$end = \Carbon\Carbon::parse('2015-5-6 00:00:00');
$diff = $start->diff($end)->format('%H:%I');
注意:这一天从 00:00:00
开始
希望对你有帮助
如果 clocked_out 小于 clocked-in,那么您需要考虑日期更改。
@php
$start = \Carbon\Carbon::parse($person->clocked_in_at);
$end = \Carbon\Carbon::parse($person->clocked_out_at);
@php
if($end->lt($start) {
$end->addDay();
}
@endphp
$diff = $start->diff($end)->format('%H:%I');
@endphp
这也适用于其他 cross-midnight 班次,而不仅仅是那些恰好在午夜结束的班次
Blade 视图不是进行此计算的地方。
所以我有这个 table 有开始时间和结束时间,我正在计算小时数。 这工作得很好,除非结束时间是午夜。
我的数据库中有用于开始和结束的 TIME 字段。
这是计算
@php
$start = \Carbon\Carbon::parse($person->clocked_in_at);
$end = \Carbon\Carbon::parse($person->clocked_out_at);
$diff = $start->diff($end)->format('%H:%I');
@endphp
如果开始时间为 07:30:00,结束时间为 13:00:00,则正确计算为 05:30 小时。但是,如果开始时间为 23:30:00,结束时间为 00:00:00,应该计算为 30 分钟,则计算为 23:30:00
我在这里错过了什么?
你需要添加这个year-month-day
像这样:
$start = \Carbon\Carbon::parse('2015-5-5 23:30:00');
$end = \Carbon\Carbon::parse('2015-5-6 00:00:00');
$diff = $start->diff($end)->format('%H:%I');
注意:这一天从 00:00:00
开始希望对你有帮助
如果 clocked_out 小于 clocked-in,那么您需要考虑日期更改。
@php
$start = \Carbon\Carbon::parse($person->clocked_in_at);
$end = \Carbon\Carbon::parse($person->clocked_out_at);
@php
if($end->lt($start) {
$end->addDay();
}
@endphp
$diff = $start->diff($end)->format('%H:%I');
@endphp
这也适用于其他 cross-midnight 班次,而不仅仅是那些恰好在午夜结束的班次
Blade 视图不是进行此计算的地方。