code: static Predicate<DateValue> byHourFilter(int[] hours) {
  		int hoursByBit = 0;
  		for (int hour : hours) {
  			hoursByBit |= 1 << hour;
  		}
  		if ((hoursByBit & LOW_24_BITS) == LOW_24_BITS) {
  			return Predicates.alwaysTrue();
  		}
  		final int bitField = hoursByBit;
  		return new Predicate<DateValue>() {
  			private static final long serialVersionUID = -6284974028385246889L;
  
  			public boolean apply(DateValue date) {
  				if (!(date instanceof TimeValue)) {
  					return false;
  				}
  				TimeValue tv = (TimeValue) date;
  				return (bitField & (1 << tv.hour())) != 0;
  			}
  		};
  	}
docs: Constructs an hour filter based on a BYHOUR rule.
  @param hours hours of the day (values must be in range [0,23])
  @return the filter