/** * @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); }
/** * @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); }
$m = new Moment(); $response['test01'] = $m->format(); $m = new Moment('2012-05-15T12:30:00', 'CET'); $response['test02'] = $m->add('hours', 2)->format(); $m = new Moment('2012-05-15T12:30:00', 'CET'); $response['test03'] = $m->subtract('days', 7)->subtract('minutes', 15)->format(); $m = new Moment('2012-05-12T15:00:00'); $result = $m->from('2011-09-25T10:00:00'); $response['test04.01'] = $result['seconds']; $response['test04.02'] = $result['minutes']; $response['test04.03'] = $result['hours']; $response['test04.04'] = $result['days']; $response['test04.05'] = $result['weeks']; $m = new Moment('2013-02-01T07:00:00'); $result = $m->fromNow(); $response['test05.01'] = $result['seconds']; $response['test05.02'] = $result['minutes']; $response['test05.03'] = $result['hours']; $response['test05.04'] = $result['days']; $response['test05.05'] = $result['weeks']; $m = new Moment('2012-04-25T03:00:00', 'CET'); $response['test06.01'] = $m->format(); $response['test06.02'] = $m->setTimezone('UTC')->format(); $m = new Moment('2012-04-25T03:00:00', 'CET'); $response['test07'] = $m->format('l, dS F Y / H:i (e)'); // ############################################ $tmpl = join('', file('test.html')); foreach ($response as $key => $value) { $tmpl = str_replace('{{' . $key . '}}', $value, $tmpl); } echo $tmpl;