Laravel / Carbon将两个时间戳加在一起?

时间:2016-05-14 13:10:52

标签: php laravel laravel-5 eloquent php-carbon

我正在开发一个系统,人们可以在这个系统中启动和停止计算它所花费时间的东西。这可以通过以下方式完成:

  • 按下“开始”按钮后,会在该行的数据库表中添加日期。

  • 按下“停止”按钮后,会添加日期(结束日期),然后按以下方式计算差异:

    $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):意外字符

有人可以建议替代方案吗?

1 个答案:

答案 0 :(得分:2)

您不应将 $ totalDuration 存储在类型为 timestamp 的字段中,因为它不是时间戳。它只是几秒钟,应存储在整数字段中。

为此使用整数类型后,添加数字不应该有任何问题:

$total = $task->time_spent + $totalDuration;