2017-06-20 34 views
0

我試圖添加四次30.控制器(laravel)的分鐘,但結果是錯誤的。循環後的碳錯誤的日期時間

這裏我的代碼:

$start = Carbon::parse($request['start']); 
$end = Carbon::parse($request['end']); 



$tmp = $start->copy(); 
for($i = 0; $i < 4; $i++){ 
    $tmp = $tmp->addMinutes("30"); // same result with addMinutes(30) 
} 

開始:2017年6月23日09:30:00
結束:2017年6月23日11:00:00
預期結果爲$ TMP:2017年-06-23 11:30:00
收到的結果爲$ tmp:2017-06-23 15:00:00

我對此結果沒有任何解釋。 我錯了什麼?

提前感謝

+0

不確定,但嘗試將其添加爲數字:'$ tmp = $ tmp-> addMinutes(30);'。 – Jerodev

+0

我已經試過這個,但結果相同 – Eddy05

+0

你確定開始日期已經被正確解析過嗎? – Jerodev

回答

0

嘗試這樣的:

$start = Carbon::parse($request['start']); 
$end = Carbon::parse($request['end']); 

$tmp = Carbon::parse($start); 
for($i = 0; $i < 4; $i++){ 
    $tmp->addMinutes(30); 
} 

dd([ 
    'start' => $start, 
    'tmp' => $tmp 
]); 

這樣你就被人拋棄有你原來的分析得到的值(你可以看到第一個值的數組,這是你希望它是什麼是)和第二個值將是start + 2 hours,所以你也可以調試。

+1

謝謝!我認爲$ start-> copy()已經是Carbon Object – Eddy05

+0

@ Eddy05,它是......所以Carbon :: parse不應該改變任何東西。 – Devon

+0

@ Eddy05是的,這是有道理的。幾星期前我完全一樣,這是我使用的解決方案。如果有更好的方法,我不會感到驚訝。 – devk