Class: Time
- Inherits:
-
Object
- Object
- Time
- Defined in:
- lib/chronic.rb,
lib/chronic/repeaters/repeater_season.rb
Overview
class Time
def self.construct(year, month = 1, day = 1, hour = 0, minute = 0, second = 0)
# extra_seconds = second > 60 ? second - 60 : 0
# extra_minutes = minute > 59 ? minute - 59 : 0
# extra_hours = hour > 23 ? hour - 23 : 0
# extra_days = day >
if month > 12
if month % 12 == 0
year += (month - 12) / 12
month = 12
else
year += month / 12
month = month % 12
end
end
base = Time.local(year, month)
puts base
offset = ((day - 1) * 24 * 60 * 60) + (hour * 60 * 60) + (minute * 60) + second
puts offset.to_s
date = base + offset
puts date
date
end
end
Class Method Summary collapse
Instance Method Summary collapse
Class Method Details
.construct(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) ⇒ Object
84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 |
# File 'lib/chronic.rb', line 84 def self.construct(year, month = 1, day = 1, hour = 0, minute = 0, second = 0) if second >= 60 minute += second / 60 second = second % 60 end if minute >= 60 hour += minute / 60 minute = minute % 60 end if hour >= 24 day += hour / 24 hour = hour % 24 end # determine if there is a day overflow. this is complicated by our crappy calendar # system (non-constant number of days per month) day <= 56 || raise("day must be no more than 56 (makes month resolution easier)") if day > 28 # no month ever has fewer than 28 days, so only do this if necessary leap_year = (year % 4 == 0) && !(year % 100 == 0) leap_year_month_days = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] common_year_month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31] days_this_month = leap_year ? leap_year_month_days[month - 1] : common_year_month_days[month - 1] if day > days_this_month month += day / days_this_month day = day % days_this_month end end if month > 12 if month % 12 == 0 year += (month - 12) / 12 month = 12 else year += month / 12 month = month % 12 end end Chronic.time_class.local(year, month, day, hour, minute, second) end |