我有以下代码:
echo $diff . ' / ';
echo gmdate("H:i:s", $diff);
这产生
129600 / 12:00:00
但是129600是36小时而不是12小时,所以我该如何将代码修改为总小时数(36)而不是1天12小时,因为我不需要显示日期
所以如果是36小时1分钟,我想显示:36:01
或36:1
谢谢
答案 0 :(得分:1)
获取日期,将其乘以24-然后加上小时,然后加上分钟和秒。
请注意,如果您有超过30/31天的时间,它将再次停止工作,并且您还需要考虑 months 或 years 。
$days = gmdate("d", $diff);
$hours = gmdate("H", $diff);
echo ($days*24 + $hours).gmdate(":i:s", $diff);
您可以改用另一种方法-提取秒和分钟!
$seconds = str_pad($diff % 60, 2, '0', STR_PAD_LEFT);
$minutes = str_pad($diff/60 % 60, 2, '0', STR_PAD_LEFT);
$hours = str_pad($diff/3600, 2, '0', STR_PAD_LEFT);
echo "$hours:$minutes:$seconds";
答案 1 :(得分:1)
$hours = floor($diff/ 3600);
$minutes = floor(($diff/ 60) % 60);
$seconds = $diff% 60;
$diff= $hours . ":" . $minutes . ":" . $seconds ;
echo $diff ;
尝试一下。这可能会给您想要的结果。
答案 2 :(得分:1)
截至您的评论:如果是08-05-2019 12:00 AM和09-05-2019 12:00 PM,则此方法无效-它带回60。
尝试以下代码
$sstartdate = new DateTime('08-05-2019 12:00:00 AM');
$edatetime = new DateTime('09-05-2019 12:00:00 PM');
$since_start = $sstartdate->diff($edatetime);
$hours = ($since_start->days * 24)+($since_start->h);
$min = $since_start->i;
$sec = $since_start->s;
echo $hours.':'.$min;
Output: 36:00
36小时00分钟