class ActiveSupport::TimeWithZone

def wrap_with_time_zone(time)

def wrap_with_time_zone(time)
  if time.acts_like?(:time)
    periods = time_zone.periods_for_local(time)
    self.class.new(nil, time_zone, time, periods.include?(period) ? period : nil)
  elsif time.is_a?(Range)
    wrap_with_time_zone(time.begin)..wrap_with_time_zone(time.end)
  else
    time
  end
end