Esempio n. 1
0
 /**
  * @param $day
  * @param $time
  * @return DateHelper
  */
 public function createDateTime($day, $time)
 {
     $date = DateHelper::create();
     $dayOfWeek = $date->dayOfWeek;
     $dayOfWeekNeeded = DateHelper::parseSuffix($day);
     $difference = $dayOfWeekNeeded - $dayOfWeek;
     $date->addDays($difference);
     $date->changeTime($time);
     return $date;
 }
Esempio n. 2
0
 /**
  * Converts a days expression to the actual DateTime numbered days array
  * @param $expression
  * @return array
  * @throws Exception
  */
 private function expressionToDays($expression)
 {
     $days = [];
     $expression = str_split($expression);
     if (sizeof($expression) == 1) {
         if (($day = DateHelper::parseSuffix($expression[0])) !== null) {
             $days[] = $day;
         } else {
             throw new Exception("Invalid Format");
         }
     } elseif (sizeof($expression) == 2) {
         $startDay = DateHelper::parseSuffix($expression[0]);
         $endDay = DateHelper::parseSuffix($expression[1]);
         if ($startDay !== null && $endDay !== null) {
             for ($i = $startDay; $i <= $endDay; $i++) {
                 $days[] = $i;
             }
         } else {
             throw new Exception("Invalid Format");
         }
     } else {
         // They are days non sequential
         $days = array_map(function ($day) {
             if ($day = DateHelper::parseSuffix($day)) {
                 return $day;
             }
         }, $expression);
     }
     return $days;
 }