2016-06-09 104 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; 
相關問題