PHP вычисляют текущий возраст человека

У меня есть даты рождения на моем сайте в формате 12.01.1980.

$person_date (string) = Day.Month.Year

Хочу добавить старость человека. Как "В настоящее время 30 лет" (2010 - 1980 = 30 лет).

Но создание функции только в годы не может дать идеальный результат:

Если дата рождения человека 12.12.1980 и текущая дата 01.01.2010 у человека нет 30 лет. Это - 29 годы и один месяц.

Должно быть вычисление при предназначении и год, месяц и день рождения со сравнением текущей даты:

0) Проанализируйте даты.

Birth date (Day.Month.Year):
Day = $birth_day;
Month = $birth_month;
Year = $birth_year;

Current date (Day.Month.Year):
Day = $current_day;
Month = $current_month;
Year = $current_year;

1) сравнение года, 2010 - 1980 = пишет "30" (позвольте ему быть $total_year переменная)

2) сравните месяцы, если (месяц даты рождения больше>, чем текущий месяц (как 12 в рождении и 01 текущем)) {делают минус один год от $total_year переменная (30 - 1 = 29)}. Если делают минус произошедший, заканчивают вычисления в этой точке. Еще пойдите следующее (3 шага).

3) else if (birth month < current month) { $total_year = $total_year (30); }

4) else if (birth month = current month) { $total_year = $total_year (30); }

и проверьте день (в этот шаг):

 if(birth day = current day) { $total_year = $total_year; }
 else if (birth day > current day) { $total_year = $total_year -1; }
 else if (birth day < current day) { $total_year = $total_year; }

5) $total_year эха;

Мое php знание не хорошо, надежда, которой можно помочь.

Спасибо.

7
задан James 1 August 2010 в 06:42
поделиться

1 ответ

Вы можете использовать класс DateTime и его метод diff () .

<?php
$bday = new DateTime('12.12.1980');
// $today = new DateTime('00:00:00'); - use this for the current date
$today = new DateTime('2010-08-01 00:00:00'); // for testing purposes

$diff = $today->diff($bday);

printf('%d years, %d month, %d days', $diff->y, $diff->m, $diff->d);

отпечатки 29 лет, 7 месяцев, 20 дней

39
ответ дан 6 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: