У меня на сайте даты рождения в формате 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, надеюсь, вы поможете.
Спасибо.