时间转换为浮点数

Fah*_*iaz 1 php

我编写了代码来转换时间的浮点值并将其转换为小时和分钟。如果输入 2.5 将返回 2:30(2 小时 30 分钟)。

$input = '2:5'; 
$num_hours=str_replace(":",".",$input,$num_hours) ;
$hours = floor($num_hours);
$mins = round(($num_hours - $hours) * 60);
echo  $hour_one = $hours.'.'.$mins; 
Run Code Online (Sandbox Code Playgroud)

但现在我想反转它:如果输入2:30它应该返回2.5.

hek*_*mgl 5

您可以使用模运算符%进行第一个运算:

$value = 2.5;
echo floor($value) . ':' . (($value * 60) % 60);
Run Code Online (Sandbox Code Playgroud)

输出:

$value = 2.5;
echo floor($value) . ':' . (($value * 60) % 60);
Run Code Online (Sandbox Code Playgroud)

要将它们转换回来,您可以使用:

$value = "2:30";

$parts = explode(':', $value);
echo $parts[0] + floor(($parts[1]/60)*100) / 100 . PHP_EOL;
Run Code Online (Sandbox Code Playgroud)
2:30
Run Code Online (Sandbox Code Playgroud)

作为我们可以使用的函数:

function hours_tofloat($val){
    if (empty($val)) {
        return 0;
    }
    $parts = explode(':', $val);
    return $parts[0] + floor(($parts[1]/60)*100) / 100;
}
Run Code Online (Sandbox Code Playgroud)