Class: DaruLite::Offsets::MonthEnd

Inherits:
DateOffsetType show all
Defined in:
lib/daru_lite/date_time/offsets.rb

Overview

Create a month end offset

Examples:

Create a MonthEnd offset

offset = DaruLite::Offsets::MonthEnd.new
offset + DateTime.new(2012,5,5)
#=> #<DateTime: 2012-05-31T00:00:00+00:00 ((2456079j,0s,0n),+0s,2299161j)>

Constant Summary collapse

FREQ =
'ME'.freeze

Instance Method Summary collapse

Methods inherited from DateOffsetType

#freq_string, #initialize

Methods inherited from DateOffset

#-@, #initialize

Constructor Details

This class inherits a constructor from DaruLite::Offsets::DateOffsetType

Instance Method Details

#+(other) ⇒ Object



301
302
303
304
305
306
307
308
309
310
311
# File 'lib/daru_lite/date_time/offsets.rb', line 301

def +(other)
  @n.times do
    other >>= 1 if on_offset?(other)
    days_in_month = DaruLite::MONTH_DAYS[other.month]
    days_in_month += 1 if other.leap? && other.month == 2

    other += (days_in_month - other.day)
  end

  other
end

#-(other) ⇒ Object



313
314
315
316
317
318
319
320
321
322
323
# File 'lib/daru_lite/date_time/offsets.rb', line 313

def -(other)
  @n.times do
    other <<= 1
    days_in_month = DaruLite::MONTH_DAYS[other.month]
    days_in_month += 1 if other.leap? && other.month == 2

    other += (days_in_month - other.day)
  end

  other
end

#on_offset?(date_time) ⇒ Boolean

Returns:

  • (Boolean)


325
326
327
# File 'lib/daru_lite/date_time/offsets.rb', line 325

def on_offset?(date_time)
  (date_time + 1).day == 1
end