class WeeklyTimeWindow {

   public Date thisWeekStartDate(Date asOf,TimeZone tz){
      Calendar cal = Calendar.getInstance(tz);
      cal.setTime(asOf);
      DayOfWeek currentDay = DayOfWeek.from(cal);
      TimeOfDay currentTime = new TimeOfDay(cal);
      long windowStartTime = millisIntoWeek(startDay, startTime);
      long checkDateIntoWeek = millisIntoWeek(currentDay, currentTime);  
      long diff = windowStartTime-checkDateIntoWeek;
      return new Date(asOf.getTime()+diff);
   }

   public  WeeklyTimeWindow(DayOfWeek startDay,String startTime, int duration, TimeUnit timeUnit);
   public  WeeklyTimeWindow(DayOfWeek startDay,TimeOfDay startTime, int duration, TimeUnit timeUnit);
   public  WeeklyTimeWindow(TimeWindow timeWindow);

}