0

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

0.5
1.2
1.45

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

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

4

5 回答 5

3

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

$time = floatval($route->flighttime);
echo number_format($time,2,':',null);
于 2013-01-30T13:23:54.737 回答
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);
于 2013-01-30T13:05:35.200 回答
0

我假设 0.5 表示半小时。使用gmdate格式G:i和您的时间(以秒为单位):

echo gmdate('G:i', round($x * 3600));
于 2013-01-30T13:12:07.910 回答
0
gmstrftime("%H:%M", $t * 60 * 60);

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

于 2013-01-30T13:12:44.897 回答
0

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

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

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

于 2013-01-30T13:17:16.493 回答