/**
  * @param $quarter
  * @param $year
  * @param string $timeZoneString
  *
  * @return MomentPeriodVo
  * @throws MomentException
  */
 public static function getQuarterPeriod($quarter, $year, $timeZoneString = 'UTC')
 {
     switch ($quarter) {
         case 1:
             $startMonth = 1;
             $endMonth = 3;
             break;
         case 2:
             $startMonth = 4;
             $endMonth = 6;
             break;
         case 3:
             $startMonth = 7;
             $endMonth = 9;
             break;
         case 4:
             $startMonth = 10;
             $endMonth = 12;
             break;
         default:
             throw new MomentException('Invalid quarter. The range of quarters is 1 - 4. You asked for: ' . $quarter);
     }
     // set start
     $start = new Moment();
     $start->setTimezone($timeZoneString)->setYear($year)->setMonth($startMonth)->setDay(1)->setTime(0, 0, 0);
     // set end
     $end = new Moment();
     $end->setTimezone($timeZoneString)->setYear($year)->setMonth($endMonth)->setDay($end->format('t'))->setTime(23, 59, 59);
     // set period vo
     $momentPeriodVo = new MomentPeriodVo();
     return $momentPeriodVo->setInterval($quarter)->setStartDate($start)->setEndDate($end);
 }
Esempio n. 2
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);
 }