PHP模数除法不能正确计算 - 提供了Codepad

时间:2011-10-06 17:36:49

标签: php math rounding modulus

我应该得到72小时,但它给了我72小时12秒......为什么???

http://codepad.org/KNj44By5

1 个答案:

答案 0 :(得分:3)

因为你的数学错了。 $elapsed将在几秒钟内完成,因此您无需在取模数之前将其除以。你真正得到的是小时模数%60。

它会像这样工作:

$in = strtotime("2011-10-02 23:00:00");
$out = strtotime("2011-10-05 23:00:00"); // 72 hours apart

$elapsed = $out - $in;

$hours = floor($elapsed / 3600);
$minutes = floor(($elapsed / 60) % 60);
   if (strlen($minutes) == "1") { $minutes = "0".$minutes; } // No single digits

$seconds = $elapsed % 60;
   if (strlen($seconds) == "1") { $seconds = "0".$seconds; } // No single digits

$total = $hours.":".$minutes.":".$seconds; // Should be 72:00:00

echo $total

修改

你还搞砸了你的零填充。您正在将2转变为20

在此处更新了键盘:http://codepad.org/XY8L9EJ1