如果日期是今天,Laravel除以零

时间:2015-07-01 08:28:06

标签: php date laravel

我正在尝试为我的网站制作一些统计数据。

但是我遇到的问题是,如果我使用我现在获得的代码,当它像今天这样的时候,那么这个月的第一天,我收到错误division by zero

我的代码:

$begin = date('Y-m-01');
$end = date('Y-m-t');
$begin = new \DateTime($begin);
$end = new \DateTime('now');
$diff = $end->diff($begin); // creates a DateInterval object
$days = (int)$diff->format('%a'); // %a  -->  days
$average_visits = $get_visits / $days;

当日期不是01或1时,它确实有效。

我如何解决他的问题?

1 个答案:

答案 0 :(得分:1)

这是因为$days实际上是zero

解释

今天是2015-07-01(至少在我的时区)

您定义的$begin = date('Y-m-01');2015-07-01

您定义的$end = new \DateTime('now');2015-07-01

您想知道天数的差异0

$diff = $end->diff($begin);
$days = (int)$diff->format('%a');

您将未知号码$get_visits除以$days(即零)。 因此,您得到了正确的错误division by zero

可能的解决方案

如果您的意思是$days完全包含开始日期和结束日期,请使用

$days = (int)$diff->format('%a') + 1;

然后

a) begin = 2015-07-01, end = 2015-07-01
b) begin = 2015-07-01, end = 2015-07-05

a)表示这是1天 b)表示这些日期为5天(2015-07-01日,2015-07-02日,2015-07-03日,2015-07-04日和2015-07-05日为5天)