$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 分として扱われます。
彼の最初の時間の形式に関する OP のコメント (0.5 は実際には 50 分) に基づいて、数学のないソリューション
$time = floatval($route->flighttime);
echo number_format($time,2,':',null);
最初に浮動小数点値を時間/分に変換します。
$hours = floor($route->flighttime);
$minutes = ($route->flighttime - $hours) * 60;
60 の代わりに 100 を掛けるか、より正確な次の手法を使用できます。
list($hours, $minutes) = explode('.', sprintf('%.2F', $route->flighttime));
次に、printf
(または などの同様の関数sprintf
)を使用して、適切にフォーマットします。
printf("%02d:%02d", $hours, $minutes);
現在の形式がドットで区切られた時間と分である場合、次を使用できますDateTime
。
$time = DateTime::createFromFormat('G.i', '9.15');
echo $time->format('H:i');
ただし、この形式で5
は、分のセクションは 50 分ではなく 5 分になります。
0.5 は 30 分を意味すると仮定しています。gmdate
形式G:i
と秒単位の時間で使用します。
echo gmdate('G:i', round($x * 3600));
gmstrftime("%H:%M", $t * 60 * 60);
... ここで、$t は時間単位のフロートです。タイムゾーンをいじりたくないので、strftime の代わりに gmstrftime を使用していることに注意してください。