Php 减去日期返回浮动

Php 减去日期返回浮动,php,date,Php,Date,我有一个函数,可以计算产品列表过期的剩余天数。当我运行下面的代码时,我得到的是浮点数,例如3.47222E-5 $days_left = date('d', strtotime($this->expiry_date) - strtotime($date)) / (60 * 60 * 24); $this->days_left = $days_left; 当我轮到结果的时候 (round)$this->days_left 持续获取0strotime($this->expi

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

$days_left = date('d', strtotime($this->expiry_date) - strtotime($date)) / (60 * 60 * 24);
$this->days_left = $days_left;
当我轮到结果的时候

 (round)$this->days_left 
持续获取0
strotime($this->expiration\u date)-strotime($date)
以秒为单位提供时差

date('d',$time)
将为您提供该
$time
的日期部分,删除任何月/年部分。你把每天的秒数除以这个数字,这个数字已经是一个日数了??显然,浮点运算的结果是计算机盲目地进行除法

相反,不要使用
date
函数获取天数,而是将时间(以秒为单位)除以一天中的秒数:

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

而且你不需要“键入cast”到不存在的
round
。根据注释,进行
round($this->days_left)

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

尝试
round($this->days\u left)
(轮)$this->days\u left
()是否确定$this->expiration\u date始终具有该值,请在获得此类浮动结果时检查该值是否已提交