减去日期返回浮点数

时间:2013-05-08 11:55:45

标签: php date

我有一个函数可以计算产品列表到期的剩余天数。当我运行下面的代码时,我得到浮点数,例如3.4722222222222E-5

$days_left = date('d', strtotime($this->expiry_date) - strtotime($date)) / (60 * 60 * 24);
$this->days_left = $days_left;

当我舍入结果时

 (round)$this->days_left 

一直保持0

2 个答案:

答案 0 :(得分:0)

strtotime($this->expiry_date) - strtotime($date)为您提供以秒为单位的时差。

date('d', $time)会为您提供$time的一天部分,删除任何月/年部分。并且你在该数字中划分每天的秒数,这已经是一天数?显然,浮点会导致计算机盲目地进行划分。

相反,抛弃date函数以获取天数,但将时间(以秒为单位)除以一天中的秒数:

$days_left = (strtotime($this->expiry_date) - strtotime($date)) / (60 * 60 * 24);

并且你没有“输入”到不存在的round。根据评论,请round($this->days_left)

答案 1 :(得分:0)

如果要正确计算日期,则应使用DateTime个对象。然后应将日期之间的差异(某事物的持续时间)呈现为DateInterval对象,这会给出确切的差异。