2016-06-09 92 views
0

在计算两个日期之间的天数方面存在一些问题,我已经检查了与此问题相关的其他线程,但无法解决我的问题。两个日期之间的天数不会产生正确的结果

我使用这个PHP代码:

while($row = $result->fetch_assoc()) { 
      $now = strtotime(date("Y-m-d")); 
      $to = strtotime($row["pickupdate"]); 
      //$days = 0; 
      $days = $to - $now; 

      if ($days <= 5 && $days >= 0) 
      { 
       echo "<table style='border: solid 1px black;'>... 

在我的数据库,我有四个“pickupdate” S是如果条件的范围内,但是当我运行查询并显示结果,我只得到两个。

我得到相同的两个输出,这意味着它只发现0天,但不是1天和2天,这是我在数据库中设置的。

日期在该范围内的数据库:

  • 2016年6月11日
  • 2016年6月9日
  • 2016年6月9日
  • 2016年6月12日

那么,为什么本月11日和12日显然不在if语句的范围之内呢?

我已经改变了if语句:

if ($days >= 0 && $days <= 100) 

我仍然得到完全相同的两个结果,

任何帮助或方向将不胜感激,谢谢。

+1

您减去从字符串 – Andreas

回答

1

正如您在评论中所述,您正在扣除字符串。它不会工作。

$days = (strtotime($to) - strtotime($now))/86400; 
+0

字符串他已经转换的字符串减法之前时间戳。通过strtotime()放置一个时间戳会返回false。缺少的只是部门的一部分。 – SML

+0

@ user6439245我认为这个问题有一个快速编辑。如果您在几分钟内编辑,则“编辑”不会显示。或者我错读了他的代码。但是我记得第一次看到这个问题时,codepart正在可以在手机上滚动 – Andreas

1

有84600秒,每天为了得到日差的结果,需要通过84600

要么 变化除以你的结果

$days = $to - $now; 

$days = ($to-$now)/86400; 

或者,您可以替换

$now = strtotime(date("Y-m-d")); 
$to = strtotime($row["pickupdate"]); 
$days = $to - $now; 

$days = (strtotime($row["pickupdate"]) - strtotime(date("Y-m-d")))/86400; 
相关问题