2013-12-16 113 views
2

我一直在試圖找出這一個小時,但無濟於事:如何得到兩個日期之間的整個月份的差異,但佔年度? 下面PHP - 日期時間月差異不佔年度差異

$assignedDate = new DateTime('2011-02-03'); 
$firstDate = new DateTime('2013-03-03'); 
$interval = $assignedDate->diff($firstDate); 
$months = (int)$interval->format('%m'); 

的代碼是在堅定的認爲兩者之間的區別是1,但是,這並不適用於我的應用程序和49將是預期的結果,我已經調查,發現這個代碼從這個美妙的地方,但得到「錯誤的字符串連接符」,所以我認爲這個問題奠定他們的弦輸出和put(INT)提前兩個,但得到0:

echo (($diff->format('%y') * 12) + $diff->format('%m')) . " full months difference"; 

是否有一個可靠的解決方案發現兩個日期之間的月份差異佔了一年?

+0

如果你有什麼嘗試使用時間戳對他們來說,然後使用一個函數來獲取區別在哪裏?或者看到這:http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php?rq=1 – Winter

回答

0

無需使用format()方法格式化數字。你可以簡單地在DateInterval對象訪問公共屬性:

$months = $interval->m + $interval->y * 12; 

demo

+0

啊,是的,非常好。但是,如果我在第一次約會後到達指定日期,則返回一個正數,而不是所期望的負數。有沒有辦法來解決這個問題? – PwnageAtPwn

+0

@PwnageAtPwn:看到公共屬性'invert',或者只是用' - > format('%R')'(或''%r'')方法格式化符號,就像[this](https://eval.in/80013)。 –