code: public static int getAbsWeekNo(final java.util.Date date, final int weekNo) {
          if (weekNo == 0 || weekNo < -MAX_WEEKS_PER_YEAR || weekNo > MAX_WEEKS_PER_YEAR) {
              throw new IllegalArgumentException(MessageFormat.format(INVALID_WEEK_MESSAGE,
                      weekNo));
          }
          if (weekNo > 0) {
              return weekNo;
          }
          final Calendar cal = Calendar.getInstance();
          cal.setTime(date);
          final int year = cal.get(Calendar.YEAR);
          // construct a list of possible week numbers..
          final List<Integer> weeks = new ArrayList<Integer>();
          cal.set(Calendar.WEEK_OF_YEAR, 1);
          while (cal.get(Calendar.YEAR) == year) {
              weeks.add(cal.get(Calendar.WEEK_OF_YEAR));
              cal.add(Calendar.WEEK_OF_YEAR, 1);
          }
          return weeks.get(weeks.size() + weekNo);
      }
docs: Returns the absolute week number for the year specified by the
  supplied date. Note that a value of zero (0) is invalid for the
  weekNo parameter and an <code>IllegalArgumentException</code>
  will be thrown.
  @param date a date instance representing a week of the year
  @param weekNo a week number offset
  @return the absolute week of the year for the specified offset