当使用 ceil 并输入 2013-02-28 作为开始和 2013-05-30 作为结束时,两者之间有 92 天:
return ceil(($end - $start) / $medium);
而在地板上我得到 91 天:
return floor(($end - $start) / $medium);
当我在 excel 和 mysql 中使用 datediff 函数执行此操作时,我也得到 91,rwo 和哪个是正确的方法有什么区别?
ceil()
函数用于通过四舍五入获得下一个最高整数值,而函数通过四舍五入floor()
将指定的数值转换为下一个最低整数值。
因此,当您使用 ceil() 时,您获得的值以及如果它包含小数点,它将始终舍入到下一个最高整数,但 floor 会将其舍入到下一个最低整数。
有关 ceil 和 floor 的更多信息可以在这里找到:http: //php.net/manual/en/function.ceil.php和http://php.net/manual/en/function.floor.php
但我认为只需使用 floor 即可获得正确的输出:
$end = "2013-02-28";
$start = "2013-05-30";
$medium = '60*60*24';
$difference = abs(strtotime($end) - strtotime($start));
$days = floor(($difference)/ ($medium));
echo $days ;
希望这可以帮助你:)
ceil - 向上舍入分数 floor - 向下舍入分数
天花板 (4.1) = 5 地板 (4.1) = 4