2010-07-24 8 views
7

Szukałem tego, ale nie znalazłem idealnej funkcji w php. Chcę uzyskać funkcję php, która oblicza wiek osoby tylko w miesiącach.PHP: Jak obliczyć wiek osoby w miesiącach

Na przykład:

less then one month old. 
5 months old. 
340 months old. 

Dzięki

+0

Dobra odpowiedź na 2010-03-01 odpowie "1", jeśli dana osoba urodzi się 2010-01-31, a "0", jeśli dana osoba urodzi się 2010-02-02. –

Odpowiedz

13

Używanie PHP DateInterval (dostępny od 5.3.0), to całkiem proste:

$birthday = new DateTime('1990-10-13'); 
$diff = $birthday->diff(new DateTime()); 
$months = $diff->format('%m') + 12 * $diff->format('%y'); 

Teraz $months będzie zawierać liczbę miesięcy żyłam.

+0

Czy istnieje konkretny powód użycia $ diff-> format() do bezpośredniego dostępu do właściwości y i m obiektu DateInterval? – kander

+0

Nie. Możesz to również zrobić, jeśli chcesz. –

+0

Nie widzę żadnej wzmianki o tych właściwościach w dokumentacji. Używanie nieudokumentowanych funkcji jest generalnie złym pomysłem, ponieważ są bardziej prawdopodobne, że ulegną zmianie w przyszłości. – Ruben

-1

Jeśli chcesz roku do kilku miesięcy, w przypadku gdy osoba wprowadza ich wieku jako $years

$month = $years*12; 

Jeśli chcesz miesięcy do lat, w których osoba wprowadza swój wiek jako $months

$year = $months/12 
+0

To nie jest całkowicie dokładne, biorąc pod uwagę fakt, że miesiące nie są rozdzielane równomiernie (28, 29, 30, 31 dni w miesiącu). – kander

+0

Ponadto, jeśli dana osoba urodziła się w styczniu, a teraz jest lipiec, obliczenia byłyby błędne przez 7 miesięcy. –

+0

nie, jeśli założysz, że $ lat można wprowadzić jako znak dziesiętny .. np. 1,5 roku itp. – ina

1
$birthday = new DateTime("June 21st 1986"); 
$diff = $birthday->diff(new DateTime()); 
$months = ($diff->y * 12) + $diff->m; 

var_dump($months); 

Coś wzdłuż tych linii?