2012-05-03 2 views
9

Possible Duplicate:
How to calculate the difference between two dates using PHP?
Date Difference in php?PHP Разница в месяцах между двумя датами?

У меня есть две даты в переменной, как

$fdate = "2011-09-01" 

$ldate = "2012-06-06" 

Теперь мне нужна разница в месяцах между ними.
Например, ответ должен быть 10, если вы посчитаете это с 09-го по 09-й (с сентября) до 06 (июнь) следующего года - вы получите 10 в качестве результата.
Как я могу это сделать в PHP?

+1

Похожий вопрос [ссылка] (http://stackoverflow.com/questions/2681548/find-month-difference-in-php) – cyberbemon

+1

Дубликаты: http://stackoverflow.com/search?q=date + разница + php – hakre

+1

Надеюсь, что это поможет http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – nithi

ответ

12

Посмотрите на date_diff:

<?php 
$datetime1 = date_create('2009-10-11'); 
$datetime2 = date_create('2009-10-13'); 
$interval = date_diff($datetime1, $datetime2); 
echo $interval->format('%m months'); 
?> 
+0

У меня ошибка при запуске этого ... Fatal Ошибка: вызов неопределенной функции date_diff() в C: \ test \ test.php в строке 4 – Jaiff

+0

@Jaiff Какая версия PHP вы используете? 5.3 требуется для этой функции. – Devator

+0

Это не работает, например, в примере, который вы предоставили, он вернет 0 –

17

Более элегантное решение заключается в использовании DateTime и DateInterval.

<?php 

// @link http://www.php.net/manual/en/class.datetime.php 
$d1 = new DateTime('2011-09-01'); 
$d2 = new DateTime('2012-06-06'); 

// @link http://www.php.net/manual/en/class.dateinterval.php 
$interval = $d2->diff($d1); 

$interval->format('%m months'); 
+22

Это не работает, если интервал более 12 месяцев. Разница в 13 месяцев будет отображаться как 1. Как пользователь, упомянутый в комментарии к другому ответу, вы можете использовать '$ interval-> m + 12 * $ interval-> y', чтобы исправить это. – Matthew