如何计算两个Zend_Date对象之间的差异,以月为单位

yeg*_*256 6 php zend-framework

我有两个对象Zend_Date类,我想计算它们之间的全日历月.我怎样才能做到这一点的区别?

<?php
$d1 = new Zend_Date('1 Jan 2008');    
$d2 = new Zend_Date('1 Feb 2010');
$months = $d1->sub($d2)->get(Zend_Date::MONTH);
assert($months == -25); // failure here
Run Code Online (Sandbox Code Playgroud)

提前致谢!

Luk*_*ous 16

在Zend_Measure_Time的帮助下,您可以轻松获得您想要的任何差异:

    $timeNow = new Zend_Date();
    $timeThen = new Zend_Date("2011-05-21T10:30:00");
    $difference = $timeNow->sub($timeThen);

    $measure = new Zend_Measure_Time($difference->toValue(), Zend_Measure_Time::SECOND);
    $measure->convertTo(Zend_Measure_Time::MONTH);

    echo $measure->getValue();
Run Code Online (Sandbox Code Playgroud)

无需复杂的计算!


小智 13

如果我正确阅读了文档,则没有实现的功能可以在几秒/分钟/ ... /月/年之间获得两个日期之间的差异,因此您需要自己计算.像这样的东西会做(dunno,如果它需要闰年,DST等考虑):

<?php
$d1 = new Zend_Date('1 Jan 2008');    
$d2 = new Zend_Date('1 Feb 2010');
$diff = $d1->sub($d2)->toValue();
$months = floor(((($diff/60)/60)/24)/30);
Run Code Online (Sandbox Code Playgroud)