2010-07-24 16 views
7

Ich habe gesucht, aber fand keine perfekte Funktion in PHP. Ich möchte eine PHP-Funktion bekommen, die das Alter der Person nur in Monaten berechnet.PHP: Wie Alter in Monaten zu berechnen

Zum Beispiel:

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

Dank

+0

Eine gute Antwort wird am 2010-03-01 Antwort '1' wenn die Person geboren wird 2010-01-31, und '0' wenn die Person geboren wird 2010-02-02. –

Antwort

13

Mit PHP DateInterval (von 5.3.0), das ist ziemlich einfach:

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

Jetzt $months wird die Anzahl der Monate enthalten ich gelebt habe.

+0

Gibt es einen bestimmten Grund, $ diff-> format() zu verwenden, um direkt auf die y- und m-Eigenschaften von DateInterval zuzugreifen? – kander

+0

Nein. Sie können das auch tun, wenn Sie es wünschen. –

+0

Ich sehe keine Erwähnung dieser Eigenschaften in der Dokumentation. Die Verwendung nicht dokumentierter Funktionen ist im Allgemeinen eine schlechte Idee, da sie sich in Zukunft eher ändern werden. – Ruben

-1

Wenn Sie Jahren auf Monate wollen, wo die Person gibt ihr Alter als $years

$month = $years*12; 

Wenn Sie Monate bis Jahre wollen, wo die Person gibt ihr Alter ein als $months

$year = $months/12 
+0

Dies ist nicht ganz korrekt, wenn man bedenkt, dass die Monate nicht gleichmäßig verteilt sind (28, 29, 30, 31 Tage pro Monat). – kander

+0

Wenn eine Person im Januar geboren wird und jetzt Juli ist, wäre die Berechnung nach 7 Monaten falsch. –

+0

nicht, wenn Sie annehmen, dass $ Jahre als Dezimalzahl eingegeben werden können. 1.5 Jahre usw. – ina

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

var_dump($months); 

Etwas in dieser Richtung?

Verwandte Themen