我有几秒钟,我想像这样转换它们:0:14
,1:25
,1:10:45
,且不带前导零。我已经尝试使用gmdate
,但它的前导零。
是否可以使用Carbon
来执行此操作,或者我必须为此创建自定义功能?
已更新:这是我当前的代码:
Carbon::now()->subSeconds($seconds)->diffForHumans(Carbon::now(), true, true);
秒数是整数,甚至可以大2000
或更多。
它显示为14s
,25m
,而我也想成为0:14
,25:27
-也显示秒数。
答案 0 :(得分:1)
您可以编写这样的自定义函数:
public function customDiffInHuman($date1, $date2)
{
$diff_in_humans = '';
$diff = 0;
if($hours = $date1->diffInHours($date2, null)){
$diff_in_humans .= $hours;
$diff = $hours * 60;
}
$minutes = $date1->diffInMinutes($date2, null);
$aux_minutes = $minutes;
if($hours)
$minutes -= $diff;
$diff = $aux_minutes * 60;
$diff_in_humans .= ($diff_in_humans) ? ':'.str_pad($minutes, 2, 0, STR_PAD_LEFT) : $minutes;
if($seconds = $date1->diffInSeconds($date2, null)){
if($diff)
$seconds -= $diff;
$diff_in_humans .= ':'.str_pad($seconds, 2, 0, STR_PAD_LEFT);
}
return $diff_in_humans;
}
如果将此函数放在您的一个类或帮助器中,并进行调用,例如:
$date1 = \Carbon\Carbon::now()->subSeconds(14);
$date2 = \Carbon\Carbon::now();
echo $your_class->customDiffInHuman($date1, $date2); // This will output 00:14
$date1 = \Carbon\Carbon::now()->subSeconds(125);
$date2 = \Carbon\Carbon::now();
echo $your_class->customDiffInHuman($date1, $date2); // This will output 2:05
$date1 = \Carbon\Carbon::now()->subSeconds(3725);
$date2 = \Carbon\Carbon::now();
echo $your_class->customDiffInHuman($date1, $date2); // This will output 1:02:05