我有一个变量$route->flighttime
,它以下列格式回显数字......
0.5
1.2
1.45
如何使用HH:MM
将其转换为显示echo
?
注意:由于某种原因,CMS将0.5
视为50分钟。
答案 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分钟。