module BusinessDay def next_business_day self.skip_weekends self, 1 end def previous_business_day self.skip_weekends self, -1 end protected def skip_weekends(date, inc) date += inc while (date.wday % 7 == 0) or (date.wday % 7 == 6) do date += inc end date end end Date.send :include, BusinessDay