/** * @param RecurrenceRule $rule * @param \DateTime $dt * * @return array */ public static function getTimeSet(RecurrenceRule $rule, \DateTime $dt) { $set = array(); if (null === $rule || $rule->getFreq() >= RecurrenceRule::FREQ_HOURLY) { return $set; } $byHour = $rule->getByHour(); $byMinute = $rule->getByMinute(); $bySecond = $rule->getBySecond(); if (empty($byHour)) { $byHour = array($dt->format('G')); } if (empty($byMinute)) { $byMinute = array($dt->format('i')); } if (empty($bySecond)) { $bySecond = array($dt->format('s')); } foreach ($byHour as $hour) { foreach ($byMinute as $minute) { foreach ($bySecond as $second) { $set[] = new Time($hour, $minute, $second); } } } return $set; }