Class: Time
- Inherits:
-
Object
- Object
- Time
- Defined in:
- lib/tickle.rb
Overview
:nodoc:
Instance Method Summary collapse
Instance Method Details
#bump(attr, amount = nil) ⇒ Object
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 |
# File 'lib/tickle.rb', line 76 def bump(attr, amount=nil) amount ||= 1 case attr when :sec then Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + amount when :min then Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60) when :hour then Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60 * 60) when :day then Time.local(self.year, self.month, self.day, self.hour, self.min, self.sec) + (amount * 60 * 60 * 24) when :wday then amount = Time::RFC2822_DAY_NAME.index(amount) if amount.is_a?(String) raise Exception, "specified day of week invalid. Use #{Time::RFC2822_DAY_NAME}" unless amount diff = (amount > self.wday) ? (amount - self.wday) : (7 - (self.wday - amount)) DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_day(diff) when :week then DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_day(amount * 7) when :month then DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_month(amount) when :year then DateTime.civil(self.year, self.month, self.day, self.hour, self.min, self.sec, self.zone).next_year(amount) else raise Exception, "type \"#{attr}\" not supported." end.to_time.localtime end |