Мне нужно рассчитать месяцы от двух дат
Например :
Если date1 = '2014-08-20'
означает 20 августа 2014
& date2 = '2014-09-17'
значит сегодня дата
тогда мне нужно разницу months = 2 (Aug + September)
Так же
If `date1 = '2014-03-15'` means 15th March 2014
& `date2 = '2014-09-17'` means today date
тогда мне нужно разницу months = 7 (March + April + May + June + July + Aug + SEPT)
Как я могу сделать с функциями даты PHP?
Это то, что вы ищете?
$date1 = new DateTime('2014-08-20');
$date2 = new DateTime('2014-09-17');
echo $date2->format('n') - $date1->format('n') + 1;
$date1 = new DateTime('2014-08-20');
$date2 = new DateTime('2014-09-17');
$diff = $date2->diff($date1);
$diff->format('%m months');
Если вы хотите учесть каждый прошедший месяц, вы можете попробовать это:
$date1 = new DateTime('2014-03-15');
$date2 = new DateTime();
$date2->modify('last day of this month'); // adjust it to take into account
$int = new DateInterval('P1M'); // every month
$count = 0;
$range = new DatePeriod($date1, $int, $date2);
foreach($range as $d) {
++$count; // for each month incremenent
}
echo $count;
Вы можете сделать это следующим образом.
Рассмотрим этот пример:
<?php
$start = new DateTime('2011-12-02');
$start->modify('first day of this month');
$end = new DateTime('2012-05-06');
$end->modify('first day of next month');
$interval = DateInterval::createFromDateString('1 month');
$period = new DatePeriod($start, $interval, $end);
foreach ($period as $dt) {
$monthNum=$dt->format("m");
echo $dt->format("Y").date('F', mktime(0, 0, 0, $monthNum, 10)). PHP_EOL;
}
Смотрите в действии Вот
Вы можете сделать с:
$first_date = '2014-03-15';
$second_date = '2014-09-17';
$date1 = strtotime($first_date);
$date2 = strtotime($second_date);
$year1 = date('Y', $date1);
$year2 = date('Y', $date2);
$month1 = date('m', $date1);
$month2 = date('m', $date2);
$diff = (($year2 - $year1) * 12) + ($month2 - $month1);
Но для подсчета разницы в днях мы также можем сделать следующее:
$date_interval = $first_date->diff($second_date);
echo "difference " . $date_interval->y . " years, " . $date_interval->m." months, ".$date_interval->d." days ";
Проверьте эту ссылку ссылка на сайт