0

我有一个函数可以计算产品列表过期的剩余天数。当我运行下面的代码时,我得到浮点数,例如 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 

a 不断获得 0

4

2 回答 2

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)

于 2013-05-08T12:02:06.010 回答
0

如果您想正确使用日期进行计算,您应该使用DateTime对象。日期(某事的持续时间)之间的差异应该被渲染为一个DateInterval对象,这给出了确切的差异。

于 2013-05-08T12:11:06.300 回答