2016-02-08 72 views
1

在Stackoverflow上有很多這樣的問題,並且在將其標記爲重複之前,讓我告訴你,在我的情況下,這些工作都不起作用。爲什麼PHP在兩個日期之間返回錯誤的日期?

Date Difference in php on days?

Calculate the difference between date/times in PHP

Dates difference with php

Finding the number of days between two dates

How to calculate the difference between two dates using PHP?

以上是我已經檢查了問題。最後一個問題有一個回答Jurka,這也不幸沒有奏效。因此,這裏是我的代碼:

$date1 = new DateTime(date('d-m-y')); 
$date2 = new DateTime($etaDate); 
$interval = $date1->diff($date2); 
echo "difference " . $interval->days . " days "; 

$etaDate在上述情況下,是16年3月2日和當前的日期是16年8月2日,所以應該返回5天但它返回一個非常高的數字 - 1826天。我嘗試了不同的方法,這也返回當天的數字。

一個日期值存儲在數據庫中的字符串等檢索我使用這個代碼重新把它回日期格式:

$newdate = DateTime::createFromFormat('d-m-y', $EntryDate); 
$newdate->add(new DateInterval('P15D')); 
$etaDate = $newdate->format('d-m-y'); 

$EntryDate是保存在數據庫中的日期,$etaDate轉換變量它變成日期格式。

+3

那麼,什麼格式是'03-02-16'和'08-02-16' - 是2003年2月16日和2008年2月16日?如果您將不明確的值輸入到PHP的日期函數中,那麼您可能無法獲得預期產出 –

+1

@MarkBaker否,2016年2月3日和2016年2月8日。 –

+0

'$ etaDate'考慮了'2003-02-16'。你最近怎麼樣? –

回答

1

只需從y to Y改變年的格式,它就可以工作。

見例如:https://eval.in/514811

+0

使用'd-m-y',我插入到數據庫中,所以我只能使用'y'。 16不能與2016年進行比較。 –

+0

當您想插入數據庫時​​,您可以隨時更改日期格式。 –

+0

是的,這是真的,但是'd-m-y'格式的問題是什麼,因爲它也是有效的。 –

0

試試這個代碼 // YYYY-MM-DD格式

$etaDate="2016-02-03"; 
$date1 = new DateTime(date('Y-m-d')); 
$date2 = new DateTime($etaDate); 
$interval = $date1->diff($date2); 
echo "difference " . $interval->days . " days "; 
相關問題