Es probable que al realizar nuestros módulos, tengamos que trabajar con campos date y time en formularios de la parte de administración. Os recomendamos utilizar Zend_date para este propósito debido a la flexibilidad que proporciona. Os adjuntamos diferentes funciones basadas en el uso de Zend_date que nos han sido de gran ayuda!
/** * functions_zend_data.php : transformación de campos time y datetime. */ /** * function diffSeconds: devuelve los segundos de diferencia entre dos campos datetime. * * $dateTime1 datetime * $dateTime2 datetime * * @return integer */ public function diffSeconds($dateTime1,$dateTime2) { //*** Datetime in Zend Format $localdatetime1 = new Zend_Date(); $localdatetime2 = new Zend_Date(); $localdatetime1->set($dateTime1, Zend_Date::DATETIME); $localdatetime2->set($dateTime2, Zend_Date::DATETIME); //*** Obtenemos la diferencia en formato segundos. $interval = $localdatetime1->sub($localdatetime2); $measure = new Zend_Measure_Time($interval->toValue(), Zend_Measure_Time::SECOND); return $measure->getValue(); } /** * function secondsToTime: transforma un valor en segundos en un valor time (HH:mm:ss). * * $totSeconds int * @return string */ public function secondsToTime($totSeconds) { //>>> Calculamos los valores de horas, minutos y segundos. $seconds = $totSeconds % 60; $totMinutes = ($totSeconds - $seconds) / 60; $minutes = $totMinutes % 60; $totHours = ($totMinutes - $minutes) / 60; $hours = $totHours % 24; return ($hours > 0 ? $hours . ":" : "00:").($minutes > 0 ? $minutes . ":" : "00:") . $seconds; } /** * function timeToString: Prepara un valor time para mostrarlos en un campo time ($fieldset->addField) de un admin form de Magento * * $timefield time * @return string */ public function timeToString($timefield) { return (string) substr($timefield,0,2).','.substr($timefield,3,2).','.substr($timefield,6,2); } /** * function getCurrentDateTime: Devuelve el valor actual de fecha - hora (datetime). * * @return string */ public function getCurrentDateTime() { $localDate = new Zend_Date(); return (string) $localDate->toString(Zend_Date::DATETIME); } /** * function getCurrentTime: Devuelve el valor actual de hora (time). * * @return string */ public function getCurrentTime() { $date = new Zend_Date(); return (string) $date->toString(Zend_Date::TIMES); } /** * function getWeekDay: Devuelve el nombre del actual día. * * @return string */ public function getWeekDay() { $date = new Zend_Date(); $day = $date->toString(Zend_Date::WEEKDAY_8601); switch ($day) { case '0': return (string)'Sunday'; break; case '1': return (string)'Monday'; break; case '2': return (string)'Tuesday'; break; case '3': return (string)'Wednesday'; break; case '4': return (string)'Thursday'; break; case '5': return (string)'Friday'; break; case '6': return (string)'Saturday'; break; default: return (string)'Nothing'; break; } }