2010-07-24 2 views
7

Я искал это, но не нашел идеальной функции в php. Я хочу получить функцию php, которая вычисляет возраст человека только в месяцах.PHP: Как рассчитать возраст человека в месяцах

Например:

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

Благодаря

+0

Хороший ответ будет на 2010-03-01 ответ «1», если человек родился 2010-01-31, и «0», если человек родился 2010-02-02. –

ответ

13

Использование РНР DateInterval (доступный от 5.3.0), что довольно легко:

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

Теперь $months будет содержать количество месяцев, я жил.

+0

Есть ли конкретная причина использовать $ diff-> format() для прямого доступа к свойствам y и m DateInterval? – kander

+0

Нет. Вы можете это сделать, если хотите. –

+0

Я не вижу упоминания этих свойств в документации. Использование недокументированных функций - это, как правило, плохая идея, поскольку они с большей вероятностью будут меняться в будущем. – Ruben

-1

Если вы хотите лет до нескольких месяцев, когда человек вводит их возраст, как $years

$month = $years*12; 

Если вы хотите месяцев до нескольких лет, где человек вводит свой возраст как $months

$year = $months/12 
+0

Это не совсем точно, учитывая тот факт, что месяцы не распределяются равномерно (28, 29, 30, 31 день в месяц). – kander

+0

Кроме того, если человек родился в январе и теперь является июлем, расчет будет ошибочным на 7 месяцев. –

+0

нет, если вы предполагаете, что $ years может быть введено как десятичное число. 1,5 года и т. Д. – ina

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

var_dump($months); 

Что-то в этом роде?

Смежные вопросы