2016-05-14 100 views
0

我正在制定一个系统,人们可以开始和停止计算所花时间的东西。这是通过以下方式完成的:Laravel/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); 

但这得来了一个错误:

Failed to parse time string (1463184003) at position 7 (0): Unexpected character

有人能提出一个替代?

回答

1

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

一旦你使用整数类型,你不应该有任何问题与添加的数字:

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