2016-01-14 3 views
-2

Мне нужно получить разницу между месяцами, независимо от дней. , если я это сделать:php count количество месяцев с разницей менее 30 дней

$todaStart = new DateTime("2015-06-30"); 
$dateEnd = new DateTime("2015-07-01"); 

$diff = $todaStart->diff($dateEnd); 
var_dump($diff); 

object(DateInterval)[3] 
public 'y' => int 0 
public 'm' => int 0 
public 'd' => int 1 
public 'h' => int 0 
public 'i' => int 0 
public 's' => int 0 
[...] 

параметр «т» 0, но месяц изменилось, так что для подсчетов, что мне нужно сделать, мне нужно, чтобы результат 1

То же самое происходит если я изменю месяц на «08», он должен учитывать разницу в 2 месяца, но ответ приходит как 1 месяц.

+0

Ваш вопрос задает вопрос о разнице в днях, которая точно соответствует вашему коду. Тот факт, что месяц тоже изменился, не имеет значения. Было бы неверно иметь значение «m» в 1 случае в этом случае. Есть ли другая логика, которая полагается на месяц, содержащий значение 1? Возможно, другая логика ошибочна и нуждается в переделке. – Dave

+0

Название и содержание вопроса противоречивы, «независимо от дней». против «менее 30 дней». –

+0

@Dave Извините, я пропустил что-то во время перевода. уже отредактировал вопрос. Мне нужно рассчитать FEE для продукта, клиент заплатит как количество последних месяцев. У них есть до последнего дня месяца, в первый день следующего месяца уже считается месяц опозданием. –

ответ

1

Копаем в сети я нашел на this сайт это решение, надеюсь, что он поможет другим.

$d1= new DateTime("2015-06-01"); 
$d2= new DateTime("2015-07-30"); 

$y1 = $d1->format('Y'); 
$m1 = $d1->format('m'); 
$y2 = $d2->format('Y'); 
$m2 = $d2->format('m'); 

$diff = (($y2 - $y1) * 12) + ($m2 - $m1); 
// var_dump($diff) output 1