diff($datetime2); return $interval -> days; } /** * Funzione che passate due date nel formato aaaa-mm-dd ne calcola i giorni di differenza formatti col segno * * @param string $data1|string $data2 * @return string $days */ public function diff_date_segno($data1, $data2) { if(is_string($data1)) $datetime1 = new DateTime($data1); else $datetime1 = $data1; if(is_string($data2)) $datetime2 = new DateTime($data2); else $datetime2 = $data2; $interval = $datetime1 -> diff($datetime2); return $interval -> format('%R%a'); } /** * Funzione che passata una data e i giorni da sommare restituisce la data somma * * @param string $data * @return string $days */ public function add_days_date($data,$days){ $data = explode('/',$data); array_reverse($data); $data = implode('-', $data); $date = new DateTime($data); $date->add(new DateInterval('P'.$days.'D')); return $date->format('d/m/Y'); } /** * Funzione che passata una data e i giorni da sottrarre e restituisce la data calcolata * * @param $data * @param $days * @param bool|false $slashed * * @return string */ public function sub_days_date($data,$days,$slashed = false){ $data = $this->getDataForDb($data); $date = new DateTime($data); $date->sub(new DateInterval('P'.$days.'D')); if($slashed) return $date->format('d/m/Y'); else return $date->format('Y-m-d'); } /** * Funzione che passata una data e gli anni da sottrarre restituisce la data sottratta * * @param string $data * @return string $days */ public function diff_days_year($data,$years){ $data = explode('/',$data); array_reverse($data); $data = implode('-', $data); $date = new DateTime($data); $date->sub(new DateInterval('P'.$years.'Y')); return $date->format('d/m/Y'); } /** * Funzione che passata una data e i giorni da sottrarre restituisce la data sottratta * * @param string $data * @return string $days */ public function diff_days($data,$days){ $this->_dateValidatorSlash = new Zend_Validate_Date(array('format' => 'dd/mm/yyyy')); $this->_dateValidatorTrattino = new Zend_Validate_Date(array('format' => 'yyyy-mm-dd')); if ($this->_dateValidatorSlash->isValid($data)) { $data = implode('-',array_reverse(explode('/',$data))); } if(!$this->_dateValidatorTrattino->isValid($data)){ return null; } $date = new DateTime($data); $date->sub(new DateInterval('P'.$days.'D')); return $date->format('d/m/Y'); } /** * Funzione che passata una data la ritorna pronta per l'inserimento sul db false se non � una data valida * * @param $data * * @return bool|string */ public function getDataForDb($data){ if(is_array($data)){ $data = new DateTime(substr($data['date'],0,10)); return $data -> format('Y-d-m'); }elseif(is_string($data)){ $this->_dateValidatorSlash = new Zend_Validate_Date(array('format' => 'dd/mm/yyyy')); $this->_dateValidatorTrattino = new Zend_Validate_Date(array('format' => 'yyyy-mm-dd')); if ($this->_dateValidatorSlash->isValid($data)) { return $this->unslashData($data); }else if($this->_dateValidatorTrattino->isValid($data)){ return $data; }else{ return null; } }else{ return $data; } } }