Module: UkWorkingDays::DateExtensions
Overview
Extensions to the Date and DateTime classes
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#next_working_day(count = 1) ⇒ Object
Returns the next (or count’th) working day.
-
#previous_working_day(count = 1) ⇒ Object
The previous (or count’th) working day.
-
#public_holiday? ⇒ Boolean
Returns true if this day is a bank holiday.
-
#weekday? ⇒ Boolean
Returns true if this day is in the week.
-
#weekend? ⇒ Boolean
Returns true if this day is on the weekend.
-
#working_day? ⇒ Boolean
Returns true if this day is a normal weekday.
Instance Method Details
#next_working_day(count = 1) ⇒ Object
Returns the next (or count’th) working day
25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/uk_working_days/date_extensions.rb', line 25 def next_working_day(count = 1) return self if count == 0 negative = count < 0 count = count.abs date = negative ? yesterday : tomorrow loop do count -= 1 if date.working_day? return date if count.zero? date += (negative ? -1 : 1).day end end |
#previous_working_day(count = 1) ⇒ Object
The previous (or count’th) working day
40 41 42 |
# File 'lib/uk_working_days/date_extensions.rb', line 40 def previous_working_day(count = 1) next_working_day(-count) end |
#public_holiday? ⇒ Boolean
Returns true if this day is a bank holiday
15 16 17 |
# File 'lib/uk_working_days/date_extensions.rb', line 15 def public_holiday? Date.public_holidays(year).include?(to_date) end |
#weekday? ⇒ Boolean
Returns true if this day is in the week
5 6 7 |
# File 'lib/uk_working_days/date_extensions.rb', line 5 def weekday? ! weekend? end |
#weekend? ⇒ Boolean
Returns true if this day is on the weekend
10 11 12 |
# File 'lib/uk_working_days/date_extensions.rb', line 10 def weekend? wday == 0 || wday == 6 end |
#working_day? ⇒ Boolean
Returns true if this day is a normal weekday
20 21 22 |
# File 'lib/uk_working_days/date_extensions.rb', line 20 def working_day? weekday? && ! public_holiday? end |