public function relativeDateTime(Zend_Date $date = null) { if (null === $date) { return $this; } $todayDate = new Zend_Date(); $diff = $todayDate->sub($date); $mt = new Zend_Measure_Time($diff); $units = $mt->getConversionList(); $chunks = array(Zend_Measure_Time::YEAR, Zend_Measure_Time::MONTH, Zend_Measure_Time::WEEK, Zend_Measure_Time::DAY, Zend_Measure_Time::HOUR, Zend_Measure_Time::MINUTE, Zend_Measure_Time::SECOND); for ($i = 0, $count = count($chunks); $i < $count; ++$i) { $seconds = $units[$chunks[$i]][0]; $unitKey = $chunks[$i]; if (0.0 !== ($result = floor($diff->get(Zend_Date::TIMESTAMP) / $seconds))) { break; } } $translateHelper = new Zend_View_Helper_Translate(); if ($result === (double) 1) { $formatedString = $translateHelper->translate($this->getUnitTemplate($unitKey)); } else { $formatedString = $translateHelper->translate($this->getUnitTemplate($unitKey . 'S')); } $formatedString = str_replace('%value%', (string) $result, $formatedString); return $formatedString; }
/** * test getConversionList * expected array */ public function testTimeConversionList() { $value = new Zend_Measure_Time('-100', Zend_Measure_Time::STANDARD, 'de'); $unit = $value->getConversionList(); $this->assertTrue(is_array($unit), 'Array expected'); }