2013-12-16 114 views
2

我一直在试图找出这一个小时,但无济于事:如何得到两个日期之间的整个月份的差异,但占年度? 下面PHP - 日期时间月差异不占年度差异

$assignedDate = new DateTime('2011-02-03'); 
$firstDate = new DateTime('2013-03-03'); 
$interval = $assignedDate->diff($firstDate); 
$months = (int)$interval->format('%m'); 

的代码是在坚定的认为两者之间的区别是1,但是,这并不适用于我的应用程序和49将是预期的结果,我已经调查,发现这个代码从这个美妙的地方,但得到“错误的字符串连接符”,所以我认为这个问题奠定他们的弦输出和put(INT)提前两个,但得到0:

echo (($diff->format('%y') * 12) + $diff->format('%m')) . " full months difference"; 

是否有一个可靠的解决方案发现两个日期之间的月份差异占了一年?

+0

如果你有什么尝试使用时间戳对他们来说,然后使用一个函数来获取区别在哪里?或者看到这:http://stackoverflow.com/questions/676824/how-to-calculate-the-difference-between-two-dates-using-php?rq=1 – Winter

回答

0

无需使用format()方法格式化数字。你可以简单地在DateInterval对象访问公共属性:

$months = $interval->m + $interval->y * 12; 

demo

+0

啊,是的,非常好。但是,如果我在第一次约会后到达指定日期,则返回一个正数,而不是所期望的负数。有没有办法来解决这个问题? – PwnageAtPwn

+0

@PwnageAtPwn:看到公共属性'invert',或者只是用' - > format('%R')'(或''%r'')方法格式化符号,就像[this](https://eval.in/80013)。 –