public Week(Date time,TimeZone zone,Locale locale){
  ParamChecks.nullNotPermitted(time,"time");
  ParamChecks.nullNotPermitted(zone,"zone");
  ParamChecks.nullNotPermitted(locale,"locale");
  Calendar calendar=Calendar.getInstance(zone,locale);
  calendar.setTime(time);
  int tempWeek=calendar.get(Calendar.WEEK_OF_YEAR);
  if (tempWeek == 1 && calendar.get(Calendar.MONTH) == Calendar.DECEMBER) {
    this.week=1;
    this.year=(short)(calendar.get(Calendar.YEAR) + 1);
  }
 else {
    this.week=(byte)Math.min(tempWeek,LAST_WEEK_IN_YEAR);
    int yyyy=calendar.get(Calendar.YEAR);
    if (calendar.get(Calendar.MONTH) == Calendar.JANUARY && this.week >= 52) {
      yyyy--;
    }
    this.year=(short)yyyy;
  }
  peg(calendar);
}

public Week ( Date time , TimeZone zone , Locale locale ) { ParamChecks . nullNotPermitted ( time , "time" ) ; ParamChecks . nullNotPermitted ( zone , "zone" ) ; ParamChecks . nullNotPermitted ( locale , "locale" ) ; Calendar calendar = Calendar . getInstance ( zone , locale ) ; calendar . setTime ( time ) ; int tempWeek = calendar . get ( Calendar . WEEK_OF_YEAR ) ; if ( tempWeek == 1 && calendar . get ( Calendar . MONTH ) == Calendar . DECEMBER ) { this . week = 1 ; this . year = ( short ) ( calendar . get ( Calendar . YEAR ) + 1 ) ; } else { this . week = ( byte ) Math . min ( tempWeek , LAST_WEEK_IN_YEAR ) ; int yyyy = calendar . get ( Calendar . YEAR ) ; if ( calendar . get ( Calendar . MONTH ) == Calendar . JANUARY && this . week >= 52 ) { yyyy -- ; } this . year = ( short ) yyyy ; } peg ( calendar ) ; }
creates a time period for the week in which the specified date / time falls , calculated relative to the specified time zone .
