Class: Daru::Offsets::MonthBegin

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

Overview

Create a month begin offset

Examples:

Create a MonthBegin offset

offset = Daru::Offsets::MonthBegin.new(2)
offset + DateTime.new(2012,5,5)
#=> #<DateTime: 2012-07-01T00:00:00+00:00 ((2456110j,0s,0n),+0s,2299161j)>

Constant Summary collapse

FREQ =
'MB'.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 Daru::Offsets::DateOffsetType

Instance Method Details

#+(date_time) ⇒ Object



268
269
270
271
272
273
274
275
276
# File 'lib/daru/date_time/offsets.rb', line 268

def + date_time
  @n.times do
    days_in_month = Daru::MONTH_DAYS[date_time.month]
    days_in_month += 1 if date_time.leap? && date_time.month == 2
    date_time += (days_in_month - date_time.day + 1)
  end

  date_time
end

#-(date_time) ⇒ Object



278
279
280
281
282
283
284
285
286
# File 'lib/daru/date_time/offsets.rb', line 278

def - date_time
  @n.times do
    date_time = date_time << 1 if on_offset?(date_time)
    date_time = DateTime.new(date_time.year, date_time.month, 1,
      date_time.hour, date_time.min, date_time.sec)
  end

  date_time
end

#on_offset?(date_time) ⇒ Boolean

Returns:

  • (Boolean)


288
289
290
# File 'lib/daru/date_time/offsets.rb', line 288

def on_offset? date_time
  date_time.day == 1
end