Class: Daru::Offsets::YearEnd

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

Overview

Create a year end offset

Examples:

Create a YearEnd offset

offset = Daru::Offsets::YearEnd.new
offset + DateTime.new(2012,5,5)
#=> #<DateTime: 2012-12-31T00:00:00+00:00 ((2456293j,0s,0n),+0s,2299161j)>

Instance Method Summary collapse

Constructor Details

#initialize(n = 1) ⇒ YearEnd

Returns a new instance of YearEnd.



372
373
374
# File 'lib/daru/date_time/offsets.rb', line 372

def initialize n=1
  @n = n
end

Instance Method Details

#+(date_time) ⇒ Object



380
381
382
383
384
385
386
387
388
# File 'lib/daru/date_time/offsets.rb', line 380

def + date_time
  if on_offset?(date_time)
    DateTime.new(date_time.year + @n, 12, 31,
      date_time.hour, date_time.min, date_time.sec)
  else
    DateTime.new(date_time.year + (@n-1), 12, 31,
      date_time.hour, date_time.min, date_time.sec)
  end
end

#-(date_time) ⇒ Object



390
391
392
# File 'lib/daru/date_time/offsets.rb', line 390

def - date_time
  DateTime.new(date_time.year - 1, 12, 31)
end

#freq_stringObject



376
377
378
# File 'lib/daru/date_time/offsets.rb', line 376

def freq_string
  (@n == 1 ? '' : @n.to_s) + 'YE'
end

#on_offset?(date_time) ⇒ Boolean

Returns:

  • (Boolean)


394
395
396
# File 'lib/daru/date_time/offsets.rb', line 394

def on_offset? date_time
  date_time.month == 12 and date_time.day == 31
end