我有一个$route->flighttime
以以下格式回显数字的变量...
0.5
1.2
1.45
如何HH:MM
使用将其转换为显示echo
?
注意:0.5
由于某种原因,CMS 将其视为 50 分钟。
我有一个$route->flighttime
以以下格式回显数字的变量...
0.5
1.2
1.45
如何HH:MM
使用将其转换为显示echo
?
注意:0.5
由于某种原因,CMS 将其视为 50 分钟。
基于 OPs 关于他的初始时间格式的评论(其中 0.5 实际上是 50 分钟),没有任何数学的解决方案
$time = floatval($route->flighttime);
echo number_format($time,2,':',null);
首先将浮点值转换为小时/分钟:
$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);
我假设 0.5 表示半小时。使用gmdate
格式G:i
和您的时间(以秒为单位):
echo gmdate('G:i', round($x * 3600));
gmstrftime("%H:%M", $t * 60 * 60);
...其中 $t 以小时为单位浮动。注意使用 gmstrftime 而不是 strftime,因为您不想使用时区。
如果当前格式是用点分隔的小时和分钟,您可以使用DateTime
:
$time = DateTime::createFromFormat('G.i', '9.15');
echo $time->format('H:i');
但是,在这种格式5
中,分钟部分将是 5 分钟,而不是 50 分钟。