Esempio n. 1
0
 /**
  * @param $period
  *
  * @return MomentPeriodVo
  * @throws MomentException
  */
 public function getPeriod($period)
 {
     switch ($period) {
         case 'week':
             $interval = $this->format('W');
             $start = new Moment('@' . $this->format('U'));
             $start->setTimezone($this->getTimezoneString())->subtractDays($this->getDaysAfterStartOfWeek())->setTime(0, 0, 0);
             $end = new Moment('@' . $this->format('U'));
             $end->setTimezone($this->getTimezoneString())->addDays(6 - $this->getDaysAfterStartOfWeek())->setTime(23, 59, 59);
             break;
             // ------------------------------
         // ------------------------------
         case 'month':
             $maxMonthDays = $this->format('t');
             $currentMonthDay = $this->format('j');
             $interval = $this->getMonth();
             $start = new Moment('@' . $this->format('U'));
             $start->setTimezone($this->getTimezoneString())->subtractDays($currentMonthDay - 1)->setTime(0, 0, 0);
             $end = new Moment('@' . $this->format('U'));
             $end->setTimezone($this->getTimezoneString())->addDays($maxMonthDays - $currentMonthDay)->setTime(23, 59, 59);
             break;
             // ------------------------------
         // ------------------------------
         case 'quarter':
             $quarter = $this->getQuarter();
             $momentPeriodVo = MomentHelper::getQuarterPeriod($quarter, $this->getYear(), $this->getTimezoneString());
             $start = $momentPeriodVo->getStartDate();
             $end = $momentPeriodVo->getEndDate();
             $interval = $quarter;
             break;
             // ------------------------------
         // ------------------------------
         default:
             throw new MomentException("Period \"{$period}\" is not supported. Supported: \"week\", \"month\", \"quarter\".");
     }
     $momentPeriodVo = new MomentPeriodVo();
     return $momentPeriodVo->setRefDate($this)->setInterval($interval)->setStartDate($start)->setEndDate($end);
 }