module Enumdate::DateHelper
Helper for date-calculation.
Private Instance Methods
beginning_of_month(date)
click to toggle source
# File lib/enumdate/date_helper.rb, line 34 def beginning_of_month(date) date.class.new(date.year, date.month, 1) end
beginning_of_week(date, wkst = 1)
click to toggle source
# File lib/enumdate/date_helper.rb, line 38 def beginning_of_week(date, wkst = 1) date - ((date.wday - wkst) % 7) end
beginning_of_year(date)
click to toggle source
# File lib/enumdate/date_helper.rb, line 30 def beginning_of_year(date) date.class.new(date.year, 1, 1) end
make_date_by_day(year:, month:, nth:, wday:)
click to toggle source
Make a date by DAY like “1st Wed of Nov, 1999''. caller must make sure:
YEAR and MONTH must be valid NTH must be < 0 or > 0 WDAY must be 0:Sun .. 6:Sat
raise ArgumentError if no date matches. for example:
no 5th Saturday exists on April 2010.
# File lib/enumdate/date_helper.rb, line 17 def make_date_by_day(year:, month:, nth:, wday:) direction = nth.positive? ? 1 : -1 edge = Date.new(year, month, direction) ydiff = nth - direction xdiff = direction * ((direction * (wday - edge.wday)) % 7) mday = edge.mday + ydiff * 7 + xdiff raise ArgumentError if mday < 1 Date.new(year, month, mday) end
months_between(date1, date2)
click to toggle source
# File lib/enumdate/date_helper.rb, line 46 def months_between(date1, date2) (date2.year * 12 + date2.month) - (date1.year * 12 + date1.month) end
years_between(date1, date2)
click to toggle source
# File lib/enumdate/date_helper.rb, line 42 def years_between(date1, date2) date2.year - date1.year end