Я работаю над заданием, в котором участвуют даты. У меня возраст человека в месяцах + дни . Теперь я хочу получить дату, когда этот человек достигнет определенного возраста в месяцах.
Например:
A person is 250 months and 15 days old on 2010-1-25. On which date this person will become 300 months old?
Подпись функции может быть:
function getReqDate( $startDate, $currAgeMonths, $currAgeDays, $reqAgeMonths ) { //return date }
Поскольку вы вычисляете текущий возраст по дате рождения, я предлагаю вам также использовать дату рождения вместо текущего возраста, чтобы вычислить, когда пользователю исполняется 300 месяцев.Следующее является эквивалентом решения DateTime, приведенного выше (не требует 5.3):
echo date('r', strtotime('+300 months', strtotime('1990-10-13')));
Со вторым параметром, представляющим собой метку времени рождения, приведенное выше даст
Tue, 13 Oct 2015 00:00:00 +0200
Дальнейшее чтение:
$date = new DateTime('1990-10-13'); $date->add(new DateInterval('P300M')); echo $date->format('r');
См. DateInterval, чтобы увидеть, как вы пишете интервал. Снова требуется PHP 5.3.0+.
DateInterval
function getReqDate($startDate, $reqAgeMonths ) { list($year,$month,$day) = explode('-',$startDate); $date = date("Y-m-d", mktime(12, 0, 0, $month+$reqAgeMonths, $day, $year )); return $date }
function getReqDate( $startDate, $currAgeMonths, $currAgeDays, $reqAgeMonths ) { $unixStartDate = strtotime($startDate); $dateBirth = strtotime("-$currAgeDays months", strtotime("-$currAgeMonths months", $unixStartDate)); return strtotime("+$reqAgeMonths months", $dateBirth); }
Используйте функцию php strtotime , чтобы получить нужную дату.например,
strtotime('+50 months', mktime());