繁体   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