PHP:以H:M值输出秒

时间:2019-05-08 10:42:34

标签: php

我有以下代码:

echo $diff . ' / ';
echo gmdate("H:i:s", $diff);

这产生

129600 / 12:00:00

但是129600是36小时而不是12小时,所以我该如何将代码修改为总小时数(36)而不是1天12小时,因为我不需要显示日期

所以如果是36小时1分钟,我想显示:36:0136:1

谢谢

3 个答案:

答案 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分钟