2012-05-03 15 views
9

Possible Duplicate:
How to calculate the difference between two dates using PHP?
Date Difference in php?PHP Różnica w miesiącach między dwiema datami?

Mam dwie daty w zmiennej jak

$fdate = "2011-09-01" 

$ldate = "2012-06-06" 

Teraz muszę różnicę w miesiącach między nimi.
Na przykład odpowiedź powinna wynosić 10, jeśli obliczysz to od miesiąca 09 (wrzesień) do 06 (czerwiec) następnego roku - otrzymasz 10 jako wynik.
Jak mogę to zrobić w PHP?

+1

Podobne zapytania [związek] (http://stackoverflow.com/questions/2681548/find-month-difference-in-php) – cyberbemon

+1

duplikatach http://stackoverflow.com/search?q=date + różnica + php – hakre

+1

Mam nadzieję, że to pomoże http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php – nithi

Odpowiedz

12

spojrzeć 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

Mam błąd podczas uruchamiania tego ... Fatal błąd: wywołanie niezdefiniowanej funkcji date_diff() w C: \ test \ test.php na linii 4 – Jaiff

+0

@Jaiff Która wersja PHP jest uruchomiona? 5.3 jest wymagany dla tej funkcji. – Devator

+0

To nie działa, na przykład podałeś go zwróci 0 –

17

Bardziej eleganckim rozwiązaniem jest użycie DateTime i 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

To nie działa, jeśli interwał jest ponad 12 miesięcy. Różnica 13 miesięcy pojawi się jako 1. Jako użytkownik wymieniony w komentarzu do drugiej odpowiedzi, możesz użyć '$ interval-> m + 12 * $ interval-> y', aby to naprawić. – Matthew

Powiązane problemy