在php中以百分比格式化整数

时间:2014-06-26 13:19:43

标签: php

我有两个$hours = 74$minutes = 20的整数,我需要的格式如下:小时和分钟(没有任何间距),一小时的百分比。所以在这种情况下,最终结果应该是7433.

为了更清楚地说明这两个数字是$hours = 74还是$minutes = 30,最终结果应该是7450。

我一直在努力寻找类似的功能,但没有任何成功。

非常感谢任何帮助或指导。

3 个答案:

答案 0 :(得分:2)

你真正想要的是$result = $hours . floor($minutes/60*100);

或者如果您需要前导零:$result = str_pad($hours,2,'0') . str_pad(floor($minutes/60*100),2,'0');

答案 1 :(得分:2)

通过使用$minutes对象来节省处理DateTimeInterface> = 60的案例的代码的痛苦。我承认,在这种情况下,它们似乎有些过分,但它们非常坚固可靠。另外,如果您想要为此代码添加天,周,月,年或秒,DateTimeInterface类已经为此工作配备了:

$now = new DateTime();
$comp = clone $now;
//2 identical datetime instances
//add hours + minutes to either one
$comp->add(
    sprintf(
        'PT%dH%dM',
        $hours,
        $minuts
    )
);
//get difference in seconds
$diff = $comp->getTimeStamp() - $now->getTimeStamp();
//or echo, I used printf to limit the number of decimals to 2
printf(
    '%.2f hours difference'
    $diff/3600 //1 hour === 3600 seconds
);

只需浏览the DateTime docs以及其他类/接口,例如DateInterval和其他实施DateTimeInterface的人。

为了完整起见,我们将如何设置"手动"

$decimalT = $hours + floor($minutes/60) + ($minutes%60)/60
//add hours in case $minutes>= 60
//floor($minutes/60);
//get remainder minutes, converted to decimal hours
//($minutes%60)/60;
printf(
    '%d hours + %d seconds == %.2f hours',
    $hours,
    $minutes,
    $decimalT
);

答案 2 :(得分:1)

使用以下代码段:

$hours = 74;
$minutes = 20;

$totalMinutes = $hours * 60 + $minutes;
$percentage = floor(($totalMinutes * 100) / 60);

var_dump($percentage);