2016-05-14 104 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;