8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
# File 'lib/overtime.rb', line 8
def parse(str, now=self.now)
comp = !block_given?
d = Date._parse(str)
if !d[:year] && !d[:mon] && !d[:mday] && !d[:hour] && !d[:min] && !d[:sec] && !d[:sec_fraction]
raise ArgumentError, "no time information in #{date.inspect}"
end
year = d[:year]
year = yield(year) if year && !comp
if d[:hour]
(add_day, mod_hour) = (d[:hour]).divmod(CONST_DAY_HOURS)
else
(add_day, mod_hour) = [0, nil]
end
make_time(year, d[:mon], d[:mday], mod_hour, d[:min], d[:sec], d[:sec_fraction], d[:zone], now) + (add_day * 24 * 60 * 60)
end
|