2016-01-29 4 views
1

Я хотел рассчитать разницу между двумя датами в месяц с PHP, но похоже, что где-то есть ошибка.Как получить разницу между месяцами между двумя датами в PHP

$datetime1 = new DateTime(date('Y-m-d')); 
$datetime2 = new DateTime(MyObject->getDate()); 
echo($datetime1->format('d/m/Y')); 
echo($datetime2->format('d/m/Y)); 

Результат:

29/01/2016 
27/01/2015 

$dateInterval = $datetime1->diff($datetime2); 
echo($dateInterval->format(%m months); 

Результат:

0 months 

Почему? Что я делаю не так ?

+1

В случае, которое вы описываете, разница в месяцах (они оба в январе), вы обнаружите, что интервал дат показывает летняя собственность содержит 1, поскольку разница между датами составляет один год. –

+0

ok .. Я думал, что разница между двумя датами в месяцах – mlwacosmos

+0

'print_r ($ dateInterval)' может помочь вам понять, как класс ['DateInterval'] (http://php.net/manual/en/class. dateinterval.php). – axiac

ответ

0
$currentDateTime = new DateTime; 
$dateTimeInTheFuture = new DateTime(MyObject->getDate()); 

$dateInterval = $dateTimeInTheFuture->diff($currentDateTime); 

$totalMonths = 12 * $dateInterval->y + $dateInterval->m; 

echo $totalMonths; 
0
// @link http://www.php.net/manual/en/class.datetime.php 
$d1 = new DateTime(date('Y-m-d')); 
$d2 = new DateTime(MyObject->getDate()); 

// @link http://www.php.net/manual/en/class.dateinterval.php 
$interval = $d2->diff($d1); 

$interval->format('%m months'); 
+1

Как это помогает? –

+0

у вас есть google поиск тоже. – mlwacosmos

+0

@Jon. Я принимаю ваш ответ – mlwacosmos

2

Calculate месяцев между двумя датами:

Для PHP> = 5.3 вы можете использовать DateTime диф, который возвращает DateInterval объект, как показано ниже.

$d1 = new DateTime("2013-12-09"); 
$d2 = new DateTime("2014-03-17"); 

var_dump($d1->diff($d2)->m); 
var_dump($d1->diff($d2)->m + ($d1->diff($d2)->y*12)); 

Если вы не PHP 5.3 или выше, вы можете использовать strtotime() функции для получения метки времени, количество секунд между любой датой и январем 1 1970 00:00:00.

$d1 = "2013-12-09"; 
$d2 = "2014-03-17"; 
echo (int)abs((strtotime($d1) - strtotime($d2))/(60*60*24*30)); 

http://www.tricksofit.com/2013/12/calculate-the-difference-between-two-dates-in-php

0

DateTime::diff относительных значений возвращает, за исключением days. Таким образом, чтобы рассчитать абсолютную разницу в месяцах, вы должны использовать:

$datetime1->diff($datetime2)->format('%y')*12+$datetime1->diff($datetime2)->format('%m'); 
0

Вы просто пропустили Одно окончание цитаты,

$datetime1 = new DateTime(date('Y-m-d')); 
$datetime2 = new DateTime(MyObject->getDate()); 
echo($datetime1->format('d/m/Y')); 
echo($datetime2->format('d/m/Y'));//You are missing single quote here 

Я также попробовать с этим кодом,

<?php 
$datetime1 = date_create('2009-10-11'); 
$datetime2 = date_create('2009-12-13'); 
echo($datetime1->format('d/m/Y')); 
echo "<br/>"; 
echo($datetime2->format('d/m/Y')); 
$dateInterval = $datetime1->diff($datetime2); 
//print_r(arrayColumn($dateInterval,'m')); 
echo "<br>Month are :".$dateInterval->format('%m'); 
exit; 

?>