Finds the Next Working Day even if holidays are in the way.
Extends Date
, Time
and DateTime
to allow you to find the next working day
Nextday only checks for English public holidays at the moment, I aim to extend it to support locales in the near future.
Date.today.next_working_day
DateTime.today.next_working_day
Time.now.next_working_day
Date.today.previous_working_day
DateTime.today.previous_working_day
Time.now.previous_working_day
Date.today.working_day?
DateTime.today.working_day?
Time.now.working_day?
Date.today.despatch_day
DateTime.today.despatch_day
Time.now.despatch_day
Date.today.delivery_day
DateTime.today.delivery_day
Time.now.delivery_day
To make caching easier you can mount the Nextday::JSON
in your application so you can poll it every few minutes and have next to real time data.
It will return so:
{
"cut_off_time": "16:00",
"working_day": false,
"next_working_day": "2012-06-11",
"previous_working_day": "2012-06-08",
"despatch_day": "2012-06-11",
"delivery_day": "2012-06-12"
}
require 'nextday/json'
YourAmazing::Application.routes.draw do
mount Nextday::JSON.new, :at => "/nextday.json"
end
To set the cut off time to a different value:
Nextday::Config.cut_off_time = "18:47"
To use with bundler add nextday to your gem file.
gem 'nextday'