簡體   English   中英

Laravel 將秒轉換為天小時和分鍾

[英]Laravel Convert seconds into days hours and minutes

我必須使用時間計算來實現一些功能,並且我的應用程序具有以下類型的代碼。

    date_default_timezone_set(auth()->user()->timezone);
                                        
        $t_now = \Carbon\Carbon::parse(date('Y-m-d H:i:s'));
                                        
$t_allowed = \Carbon\Carbon::parse($shift_details->start_time) ;
                                        
 @endphp
    
 @php
$check = $t_allowed->diffForHumans($t_now);
                                       
  $search = 'after';
 $dff_min = $t_allowed->diffInSeconds($t_now, true);
                                        
 $init = $dff_min;
 $day = floor($init / 86400);
 $hours = floor(($init - $day * 86400) / 3600);
 $minutes = floor(($init / 60) % 60);
 $seconds = $init % 60;
   $late_not_late = $hours . ' hours ' . $minutes . ' minutes ' . $seconds . ' seconds ';

首先我想確認$dff_min = $t_allowed->diffInSeconds($t_now, true); 是返回分鍾還是秒? 據我所知, $dff_min包含秒數,我知道可以使用(init /3600)計算小時數,但以下語句的含義是什么

$hours = floor(($init - $day * 86400) / 3600);

為什么開發人員從$init中減去$day * 86400

類似地,我們也可以通過 $init/60 計算秒數,因為在一分鍾內有 60 秒,但是下一行的含義是什么

$minutes = floor(($init / 60) % 60);

以及為什么他在這里使用模數

$seconds = $init % 60; 

\Carbon\Carbon::parse(date('Ymd H:i:s'))將調用兩次 timelib 並會丟失微秒,只需執行\Carbon\Carbon::now()並且您不需要重新發明輪子,你可以得到這個確切的字符串:

$t_now = \Carbon\Carbon::now();
$t_allowed = \Carbon\Carbon::parse($shift_details->start_time);

$late_not_late = $t_allowed->diffForHumans($t_now, ['parts' => 3, 'syntax' => CarbonInterface::DIFF_ABSOLUTE]);

$late_not_late 將包含2 days 9 hours 20 minutes

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM