2017-05-18 235 views
2

我需要這樣一個日期間制定的月數之間計算的月數:PHP的日期與當前日期

$inputDate = '09/08/2016'; 

是在MM/DD/YYYY格式輸入,和當前的日期,例如:

$today = date("m/d/Y"); 

我一直在尋找的date_diff但似乎無法在這裏獲取語法和這裏得到任何幫助。

+0

@PedroLobito我認爲他們已經在這裏足夠長的時間知道該怎麼做,並給出了他們的代表得分。這也只是9分鐘。因爲他們發佈。 –

+0

@ Fred-ii-沒有注意到代表!在自動模式下... –

+0

@ Fred-ii-請問您可以看看我的回答的評論嗎?爲什麼我無法正確地獲得月份? –

回答

2

您可以使用DateTimediff

$datetime1 = new DateTime(); 
$datetime2 = new DateTime('09/08/2016'); 
$interval = $datetime1->diff($datetime2); 
$months = $interval->format('%m months'); # you can also use %a days %h hours %i minutes %s seconds 
echo $months; 
# 8 months 
# optimally you can use: 
# echo $datetime1->diff($datetime2)->y*12; 
# or 
# echo $interval->m 


更新基礎上的意見:

$datetime1 = new DateTime(); 
$datetime2 = new DateTime('09/08/2015'); 
$interval = $datetime1->diff($datetime2); 
echo (($interval->format('%y') * 12) + $interval->format('%m')) . " full months difference"; 

注:

一個DateInterval Object的樣子:

DateInterval Object 
(
    [y] => 3 
    [m] => 5 
    [d] => 15 
    [h] => 0 
    [i] => 0 
    [s] => 0 
    [invert] => 0 
    [days] => 1264 
) 

這就是爲什麼我們要乘的years * 12數量,以獲得在幾個月的差別添加months。奇怪,但這是它的工作原理...

+0

我剛剛測試了'05/13/2015'的日期,並且它返回0個月 - 任何想法爲什麼會發生這種情況? – user982124

+0

我不知道爲什麼它會返回0個月,儘管如此,您還可以使用'$ datetime1-> diff($ datetime2) - > y * 12;' –

+0

在幾個月內獲得差異。 $ datetime2到2015('$ datetime2 = new DateTime('09/08/2015');')它仍然會返回8個月。 – user982124