phpzend-frameworkdatezend-date

Bug with Zend_Date calculating subtraction two date


I write this function:

public function calcDifferentDate($dateStart, $dateEnd = false, $output = Zend_Date::DAY)
{
    $dateEnd = $dateEnd ? $dateEnd : Zend_Date::now()->toString('YYYY-MM-dd');
    $dateStartZD = new Zend_Date($dateStart, 'YYYY-MM-dd');
    $dateEndZD = new Zend_Date($dateEnd, 'YYYY-MM-dd');
    return $dateEndZD->sub($dateStartZD)->toString($output);
}

If call this:

echo calcDifferentDate('2011-11-10');

and today is: '2011-11-14' the output returned is 05 and not 04 why? where am I doing wrong?

P.S. I use ZF 1.11.11 version


I found the solution

this work right! :D

public function calcDaysDiffDate($dateStart, $dateEnd = '')
{
    $dateEnd = !empty($dateEnd) ? $dateEnd : Zend_Date::now()->toString('YYYY-MM-dd');
    $dateStartZD = new Zend_Date($dateStart, 'YYYY-MM-dd');
    $dateEndZD = new Zend_Date($dateEnd, 'YYYY-MM-dd');
    $dateStartZD->sub($dateEndZD);
    return $dateStartZD->getTimestamp() / (60 * 60 * 24);
}

Solution

  • I find solution:

    public function calcDaysDiffDate($dateStart, $dateEnd = '')
    {
        $dateEnd = !empty($dateEnd) ? $dateEnd : Zend_Date::now()->toString('YYYY-MM-dd');
        $dateStartZD = new Zend_Date($dateStart, 'YYYY-MM-dd');
        $dateEndZD = new Zend_Date($dateEnd, 'YYYY-MM-dd');
        $dateStartZD->sub($dateEndZD);
        return $dateStartZD->getTimestamp() / (60 * 60 * 24);
    }