[英]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.