Example #1
0
 /**
  * @return Date
  * @see http://www.faqs.org/rfcs/rfc3339.html
  * @see http://www.cl.cam.ac.uk/~mgk25/iso-time.html
  **/
 public static function makeFromWeek($weekNumber, $year = null)
 {
     if (!$year) {
         $year = date('Y');
     }
     Assert::isTrue($weekNumber > 0 && $weekNumber <= self::getWeekCountInYear($year));
     $date = new self(date(self::getFormat(), mktime(0, 0, 0, 1, 1, $year)));
     $days = ($weekNumber - 1 + (self::getWeekCountInYear($year - 1) == 53 ? 1 : 0)) * 7 + 1 - $date->getWeekDay();
     return $date->modify("+{$days} day");
 }