class WeeklyTimeWindow {

   public boolean isDateInTimeWindow(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 windowEndTime = windowStartTime+durationTimeUnit.toMillis(duration);
      long checkDateIntoWeek = millisIntoWeek(currentDay, currentTime);  
      return (checkDateIntoWeek >= windowStartTime) && (checkDateIntoWeek < windowEndTime);
   }

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

}