Method: RiCal::FastDateTime#advance
- Defined in:
- lib/ri_cal/fast_date_time.rb
#advance(options) ⇒ Object
:nodoc:
140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/ri_cal/fast_date_time.rb', line 140 def advance() # :nodoc: new_date = @date new_offset = [:offset] || offset month_delta = ([:years] || 0) * 12 + ([:months] || 0) day_delta = ([:weeks] || 0) * 7 + ([:days] || 0) sec_delta = hms_to_seconds(([:hours] || 0), ([:minutes] || 0), ([:seconds] || 0)) day_delta, new_secs_since_bod = *adjust_day_delta(day_delta, secs_since_bod + sec_delta) new_hour, new_min, new_sec = *seconds_to_hms(new_secs_since_bod) new_date = new_date >> month_delta unless month_delta == 0 new_date += day_delta unless day_delta == 0 FastDateTime.new(new_date.year, new_date.month, new_date.day, new_hour, new_min, new_sec, new_offset) end |