我有两个$hours = 74
和$minutes = 20
的整数,我需要的格式如下:小时和分钟(没有任何间距),一小时的百分比。所以在这种情况下,最终结果应该是7433.
为了更清楚地说明这两个数字是$hours = 74
还是$minutes = 30
,最终结果应该是7450。
我一直在努力寻找类似的功能,但没有任何成功。
非常感谢任何帮助或指导。
答案 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);