如何将数字和小数转换为HH:MM

时间:2013-01-30 13:02:55

标签: php

我有一个变量$route->flighttime,它以下列格式回显数字......

0.5
1.2
1.45

如何使用HH:MM将其转换为显示echo

注意:由于某种原因,CMS将0.5视为50分钟。

5 个答案:

答案 0 :(得分:3)

基于OP关于他的初始时间格式的评论(其中.5实际上是50分钟),没有任何数学的解决方案

$time = floatval($route->flighttime);
echo number_format($time,2,':',null);

答案 1 :(得分:1)

如果输入是小时的浮点值

首先将浮点值转换为小时/分钟:

$hours = floor($route->flighttime);
$minutes = ($route->flighttime - $hours) * 60;

如果输入是一个小时/分钟对折磨以适应浮动

您可以乘以100而不是60,或者使用这种可能更准确的技术:

list($hours, $minutes) = explode('.', sprintf('%.2F', $route->flighttime));

无论如何

然后使用printf(或某些类似的功能,例如sprintf)来正确格式化它:

printf("%02d:%02d", $hours, $minutes);

答案 2 :(得分:0)

我假设0.5意味着半个小时。使用格式为gmdate的{​​{1}}和以秒为单位的时间:

G:i

答案 3 :(得分:0)

gmstrftime("%H:%M", $t * 60 * 60);

...其中$ t以小时为单位浮动。注意使用gmstrftime而不是strftime,因为你不想使用时区。

答案 4 :(得分:0)

如果当前格式是以小时和小时分隔的小时,则可以使用DateTime

$time = DateTime::createFromFormat('G.i', '9.15');
echo $time->format('H:i');

但是,在这种格式中,分钟部分中的5将是5分钟,而不是50分钟。