module IceCube::Validations::HourOfDay

def hour_of_day(*hours)

Add hour of day validations
def hour_of_day(*hours)
  hours.flatten.each do |hour|
    unless hour.is_a?(Integer)
      raise ArgumentError, "expecting Integer value for hour, got #{hour.inspect}"
    end
    verify_alignment(hour, :hour, :hour_of_day) { |error| raise error }
    validations_for(:hour_of_day) << Validation.new(hour)
  end
  clobber_base_validations(:hour)
  self
end

def realign(opening_time, start_time)

def realign(opening_time, start_time)
  return super unless validations[:hour_of_day]
  freq = base_interval_validation.interval
  first_hour = Array(validations[:hour_of_day]).min_by(&:value)
  time = TimeUtil::TimeWrapper.new(start_time, true)
  if freq > 1 && base_interval_validation.type == :hour
    offset = first_hour.validate(opening_time, start_time)
    time.add(:hour, offset - freq)
  else
    time.hour = first_hour.value
  end
  super(opening_time, time.to_time)
end