/** * @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"); }