我正在跟踪每个员工从受雇之时起在工作中所花费的总时间。
我有条目表(签入/签出),并且在签出发生后计算时间。
但是,我有一个与之相关的整数列,例如,如果有人在10:53:07输入并在11:18:31离开,则显示24 结果(由于07和31之间存在24秒)。达到60后基本上会重置为0。
图片:
这是我在控制器中用于求和的相关代码:
$employees = Employee::all();
$totals = [];
foreach($employees as $employee)
{
$totals[$employee->id] = $employee->attendances->sum('time_spent_working');
}
我在迁移本身中将time_spent_working格式化为整数。什么是最好/最干净的解决方案?
答案 0 :(得分:0)
我将在需要时使用Carbon diffForHumans functionality计算该差异,而不是将其保存在数据库中。
喜欢
index
如果您想要一个绝对数字,而不是一个人类可以理解的数字,则可以使用Carbons $startDate = Carbon::parse($date->entered);
$endDate = Carbon::parse($date->left);
$diff = $startDate->diffInDays($endDate);
,它给出了秒数,即使该秒数大于60。但是您必须一些逻辑来显示秒/分钟/小时等。
答案 1 :(得分:0)
使用差异函数
$startTime = "2019-01-05 23:20:25";
$start = new Carbon($startTime);
$finishTime = "2019-01-06 01:20:30";
$end = new Carbon($finishTime);
$end->diff($start)->format('%H:%I:%S');
答案 2 :(得分:0)
我设法通过gmdate函数(将其插入到视图中)做到了
save-svg-as-png
如果有帮助,我已经将差异及时存储在SECODNS中
从控制器中:
<td>{{ gmdate("H:i:s", $totals[$employee->id]) }}</td>