0

$route->flighttime次の形式で数値をエコーする変数があります...

0.5
1.2
1.45

HH:MMを使用して表示に変換するにはどうすればよいechoですか?

注: 0.5CMS では何らかの理由で 50 分として扱われます。

4

5 に答える 5

3

彼の最初の時間の形式に関する OP のコメント (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;

入力が float に収まるように拷問された時間/分のペアである場合

60 の代わりに 100 を掛けるか、より正確な次の手法を使用できます。

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

いかなる場合でも

次に、printf(または などの同様の関数sprintf)を使用して、適切にフォーマットします。

printf("%02d:%02d", $hours, $minutes);
于 2013-01-30T13:05:35.200 に答える
0

現在の形式がドットで区切られた時間と分である場合、次を使用できますDateTime

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

ただし、この形式で5は、分のセクションは 50 分ではなく 5 分になります。

于 2013-01-30T13:17:16.493 に答える
0

0.5 は 30 分を意味すると仮定しています。gmdate形式G:iと秒単位の時間で使用します。

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

... ここで、$t は時間単位のフロートです。タイムゾーンをいじりたくないので、strftime の代わりに gmstrftime を使用していることに注意してください。

于 2013-01-30T13:12:44.897 に答える