ActiveSupport mini-extension to allow adding business_days to time objects.
Ruby
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
spec
.gitignore
Gemfile
LICENSE
README.rdoc
Rakefile
business_days.gemspec

README.rdoc

business_days

Business Days is a sort-of extension to ActiveSupport to allow adding business days to time objects.

Installation

Add a config.gem line (rails 2.3)

config.gem 'business_days'

Or add it to your Gemfile.

gem 'business_days'

Examples

(Time.parse("Friday") + 1.business_day).strftime("%A")
# => "Monday"

(Time.parse("Friday") + 2.business_days).strftime("%A")
# => "Tuesday"

(Time.parse("Saturday") + 1.business_day).strftime("%A")
# => "Tuesday"

(Time.parse("Saturday") + 0.business_days).strftime("%A")
# => "Monday" 

(Time.parse("Friday") - 1.business_day).strftime("%A")
# => "Thursday"

Holidays

Holidays can be configured by passing in dates:

BusinessDays::Config.holidays = Date.parse("2015-01-01")

You'll probably want to combine this with the holidays gem and put in to an initializer:

# config/initializers/business_days.rb

BusinessDays::Config.holidays = Holidays.between(Date.today, 1.year.from_now, :us).map do |holiday|
  holiday[:date]
end

Current Limitations

  • Time.now + 123512.business_days is done iteratively, even though it would be fairly straightforward to add (5/7 * n) + or - some small number based on where in the week you started.

  • saturday or sunday + 0.business_days is Monday. There are strong arguments both ways for making this result either monday or saturday. I think Monday is the more helpful. Write me hatemail if you disagree.