我正在开发一个系统,人们可以在这个系统中启动和停止计算它所花费时间的东西。这可以通过以下方式完成:
按下“开始”按钮后,会在该行的数据库表中添加日期。
按下“停止”按钮后,会添加日期(结束日期),然后按以下方式计算差异:
$startTime = \Carbon\Carbon::parse($task->date_start);
$finishTime = \Carbon\Carbon::parse($task->date_complete);
$totalDuration = $finishTime->diffInSeconds($startTime);
并且“timeSpent”$totalDuration
也存储为时间戳。
要求已更改,以便用户可以停止/启动但仍保留总时间。我的想法是:
使用与以下相同的流程,timeSpent
始终存储,因此如果用户再次点击开始/停止,我可以像以前一样计算差异,然后将其添加到timeSpent
存储在数据库中,但我似乎无法弄清楚如何做到这一点。我试过了:
$totalTimeSpent = strtotime($task->time_spent) +
strtotime($totalDuration);
然后再次解析它:
$total = \Carbon\Carbon::parse($totalTimeSpent);
但这会引发错误:
无法解析位置7(0)处的时间字符串(1463184003):意外字符
有人可以建议替代方案吗?
答案 0 :(得分:2)
您不应将 $ totalDuration 存储在类型为 timestamp 的字段中,因为它不是时间戳。它只是几秒钟,应存储在整数字段中。
为此使用整数类型后,添加数字不应该有任何问题:
$total = $task->time_spent + $totalDuration;