Попробуйте вернуть это вместо:
$newDate = new Zend_Date($dateEndZD->sub($dateStartZD), 'YYYY-MM-dd');
return $newDate->get($output);
Расчеты неверны, я попытаюсь добраться до этого позже. Но сейчас вам нужно, чтобы ваша логика была похожа на это, потому что, как я сказал в моем комментарии, ваш метод приводил к fatal error
из-за того, что вычитание даты возвращало целое число вместо Zend_Date
объекта для вызова toString()
.
Редактировать
Извините за мой самонадеянный, не очень продуманный предыдущий ответ. После более тщательного тестирования я считаю, что нашел вашу проблему. Функция sub()
принимает необязательный второй параметр $part
, который является частью даты, которая будет возвращена из полученного вычитания даты. Не нужно звонить toString()
сейчас, даже если бы вы могли.
Так что, без дальнейших разъяснений, здесь с фиксированным оператором возврата:
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, $output); // <-- fixed
}
Второе редактирование
После разговора с OP кажется, что мое решение не будет работать для ZF 1.11.x из-за различий в методе Zend_Date::sub()
.