[英]Laravel Carbon differents between two dates
我的網站上的產品每周都有折扣,購買時,用戶會寫下多少折扣仍然有效。 計算小時和分鍾之間的時間時出現問題。
為了計算有多少天會有折扣,我這樣做:
$realTime = Carbon::now();
$diff = $realTime->diffInDays($item->created_at);
$date = 7 - $diff;
if ($diff < 7) {
Notify::create(
[
'user_id' => $this->user->id,
'title' => 'Message',
'message' => 'Discount will be available '.$date.' '.Lang::choice('day|days|', $date, [], 'ru'),'',
'status' => '2',
]);
}
這是通過題詞返回給我的,折扣將在另外 1、2、3... 天可用。
現在,我如何計算剩余的小時數和分鍾數?
我嘗試這樣的事情:
$realTime = Carbon::now();
$diff_hours = $realTime->diffInHours($item->created_at);
$date_hours = 168 - $diff_hours;
if ($diff == 7) {
Notify::create(
[
'user_id' => $this->user->id,
'title' => 'Message',
'message' => 'Discount will be available '.$date_hours .' '.Lang::choice('hour|hours|', $date_hours , [], 'ru'),'',
'status' => '2',
]);
}
168
是第 1 周的時間,但也許我做錯了什么? 因為最后我得到-17小時的負值。 並且通過同樣的方法,我試圖在幾分鍾內做出改變,但我再次得到一個負面和難以理解的價值。
UPD :在我的數據庫中,項目的格式2020-05-26 23:40:15
我寫道:
$realTime = Carbon::now();
$diff = $realTime->diffInDays($item->created_at);
$realTime
for date 現在給我:
object(Carbon\Carbon)#623 (3) { ["date"]=> string(26) "2020-05-30 18:51:23.846522" ["timezone_type"]=> int(3) ["timezone"]=> string(13) "Europe/Moscow" }
假設您有這樣的開始和結束折扣日期:
$start = new Carbon('2018-10-04 15:00:03');
$end = new Carbon('2018-10-05 17:00:09');
你可以這樣做:
$diff = $start->diff($end);
現在 $diff 將讓您完全控制天數和分鍾數。 您可以為獲取天數執行以下操作:
$diff->d
幾分鍾
$diff->m
意味着您可以連接值以創建如下語句:
$diff->d . 'days ' . $diff->m . 'minutes and ' . $diff->s . ' seconds remaining.'
最終測試代碼可能如下所示:
$start = new Carbon('2018-10-04 15:00:03');
$end = new Carbon('2018-10-05 17:00:09');
$diff = $start->diff($end);
$message = $diff->d . 'days ' . $diff->m . 'minutes and ' . $diff->s . ' seconds remaining.';
dd($message);
您應該使用 Carbon 在幾秒鍾內獲取差異,然后使用它的字段來完成您的工作。 來源。
$totalDuration = $finishTime->diffInSeconds($startTime);
gmdate('H', $totalDuration);//hours
gmdate('m', $totalDuration); // minutes
gmdate('s', $totalDuration);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.