Bug #4692 ยป 0001-Fix-indentation.patch
ext/date/lib/date.rb | ||
---|---|---|
# month's numerical representation indexed into this array
|
||
# gives the name of that month (hence the first element is nil).
|
||
MONTHNAMES = [nil] + %w(January February March April May June July
|
||
August September October November December)
|
||
August September October November December)
|
||
# Full names of days of the week, in English. Days of the week
|
||
# count from 0 to 6 (except in the commercial week); a day's numerical
|
||
... | ... | |
# Abbreviated month names, in English.
|
||
ABBR_MONTHNAMES = [nil] + %w(Jan Feb Mar Apr May Jun
|
||
Jul Aug Sep Oct Nov Dec)
|
||
Jul Aug Sep Oct Nov Dec)
|
||
# Abbreviated day names, in English.
|
||
ABBR_DAYNAMES = %w(Sun Mon Tue Wed Thu Fri Sat)
|
||
... | ... | |
when Infinity; return d <=> other.d
|
||
when Numeric; return d
|
||
else
|
||
begin
|
||
l, r = other.coerce(self)
|
||
return l <=> r
|
||
rescue NoMethodError
|
||
end
|
||
begin
|
||
l, r = other.coerce(self)
|
||
return l <=> r
|
||
rescue NoMethodError
|
||
end
|
||
end
|
||
nil
|
||
end
|
||
... | ... | |
case other
|
||
when Numeric; return -d, d
|
||
else
|
||
super
|
||
super
|
||
end
|
||
end
|
||
def to_f
|
||
return 0 if @d == 0
|
||
if @d > 0
|
||
Float::INFINITY
|
||
Float::INFINITY
|
||
else
|
||
-Float::INFINITY
|
||
-Float::INFINITY
|
||
end
|
||
end
|
||
... | ... | |
def find_fdoy(y, sg) # :nodoc:
|
||
j = nil
|
||
1.upto(31) do |d|
|
||
break if j = _valid_civil_r?(y, 1, d, sg)
|
||
break if j = _valid_civil_r?(y, 1, d, sg)
|
||
end
|
||
j
|
||
end
|
||
... | ... | |
def find_ldoy(y, sg) # :nodoc:
|
||
j = nil
|
||
31.downto(1) do |d|
|
||
break if j = _valid_civil_r?(y, 12, d, sg)
|
||
break if j = _valid_civil_r?(y, 12, d, sg)
|
||
end
|
||
j
|
||
end
|
||
... | ... | |
def find_fdom(y, m, sg) # :nodoc:
|
||
j = nil
|
||
1.upto(31) do |d|
|
||
break if j = _valid_civil_r?(y, m, d, sg)
|
||
break if j = _valid_civil_r?(y, m, d, sg)
|
||
end
|
||
j
|
||
end
|
||
... | ... | |
def find_ldom(y, m, sg) # :nodoc:
|
||
j = nil
|
||
31.downto(1) do |d|
|
||
break if j = _valid_civil_r?(y, m, d, sg)
|
||
break if j = _valid_civil_r?(y, m, d, sg)
|
||
end
|
||
j
|
||
end
|
||
... | ... | |
# Returns the corresponding Julian Day Number.
|
||
def civil_to_jd(y, m, d, sg=GREGORIAN) # :nodoc:
|
||
if m <= 2
|
||
y -= 1
|
||
m += 12
|
||
y -= 1
|
||
m += 12
|
||
end
|
||
a = (y / 100.0).floor
|
||
b = 2 - a + (a / 4.0).floor
|
||
jd = (365.25 * (y + 4716)).floor +
|
||
(30.6001 * (m + 1)).floor +
|
||
d + b - 1524
|
||
(30.6001 * (m + 1)).floor +
|
||
d + b - 1524
|
||
if jd < sg
|
||
jd -= b
|
||
jd -= b
|
||
end
|
||
jd
|
||
end
|
||
... | ... | |
# as a three-element array.
|
||
def jd_to_civil(jd, sg=GREGORIAN) # :nodoc:
|
||
if jd < sg
|
||
a = jd
|
||
a = jd
|
||
else
|
||
x = ((jd - 1867216.25) / 36524.25).floor
|
||
a = jd + 1 + x - (x / 4.0).floor
|
||
x = ((jd - 1867216.25) / 36524.25).floor
|
||
a = jd + 1 + x - (x / 4.0).floor
|
||
end
|
||
b = a + 1524
|
||
c = ((b - 122.1) / 365.25).floor
|
||
... | ... | |
e = ((b - d) / 30.6001).floor
|
||
dom = b - d - (30.6001 * e).floor
|
||
if e <= 13
|
||
m = e - 1
|
||
y = c - 4716
|
||
m = e - 1
|
||
y = c - 4716
|
||
else
|
||
m = e - 13
|
||
y = c - 4715
|
||
m = e - 13
|
||
y = c - 4715
|
||
end
|
||
return y, m, dom
|
||
end
|
||
... | ... | |
def commercial_to_jd(y, w, d, sg=GREGORIAN) # :nodoc:
|
||
j = find_fdoy(y, sg) + 3
|
||
(j - (((j - 1) + 1) % 7)) +
|
||
7 * (w - 1) +
|
||
(d - 1)
|
||
7 * (w - 1) +
|
||
(d - 1)
|
||
end
|
||
# Convert a Julian Day Number to a Commercial Date
|
||
... | ... | |
a = jd_to_civil(jd - 3, sg)[0]
|
||
j = commercial_to_jd(a + 1, 1, 1, sg)
|
||
if jd >= j
|
||
y = a + 1
|
||
y = a + 1
|
||
else
|
||
j = commercial_to_jd(a, 1, 1, sg)
|
||
y = a
|
||
j = commercial_to_jd(a, 1, 1, sg)
|
||
y = a
|
||
end
|
||
w = 1 + ((jd - j) / 7).floor
|
||
d = (jd + 1) % 7
|
||
... | ... | |
def nth_kday_to_jd(y, m, n, k, sg=GREGORIAN) # :nodoc:
|
||
j = if n > 0
|
||
find_fdom(y, m, sg) - 1
|
||
else
|
||
find_ldom(y, m, sg) + 7
|
||
end
|
||
find_fdom(y, m, sg) - 1
|
||
else
|
||
find_ldom(y, m, sg) + 7
|
||
end
|
||
(j - (((j - k) + 1) % 7)) + 7 * n
|
||
end
|
||
... | ... | |
Rational(Rational(1, 2), 2) # a challenge
|
||
def time_to_day_fraction(h, min, s)
|
||
Rational(h * 3600 + min * 60 + s, 86400) # 4p
|
||
Rational(h * 3600 + min * 60 + s, 86400) # 4p
|
||
end
|
||
rescue
|
||
def time_to_day_fraction(h, min, s)
|
||
if Integer === h && Integer === min && Integer === s
|
||
Rational(h * 3600 + min * 60 + s, 86400) # 4p
|
||
else
|
||
(h * 3600 + min * 60 + s).to_r/86400 # 4p
|
||
end
|
||
if Integer === h && Integer === min && Integer === s
|
||
Rational(h * 3600 + min * 60 + s, 86400) # 4p
|
||
else
|
||
(h * 3600 + min * 60 + s).to_r/86400 # 4p
|
||
end
|
||
end
|
||
end
|
||
... | ... | |
# +sg+ specifies the Day of Calendar Reform.
|
||
def _valid_ordinal_r? (y, d, sg=GREGORIAN) # :nodoc:
|
||
if d < 0
|
||
return unless j = find_ldoy(y, sg)
|
||
ny, nd = jd_to_ordinal(j + d + 1, sg)
|
||
return unless ny == y
|
||
d = nd
|
||
return unless j = find_ldoy(y, sg)
|
||
ny, nd = jd_to_ordinal(j + d + 1, sg)
|
||
return unless ny == y
|
||
d = nd
|
||
end
|
||
jd = ordinal_to_jd(y, d, sg)
|
||
return unless [y, d] == jd_to_ordinal(jd, sg)
|
||
... | ... | |
# +sg+ specifies the Day of Calendar Reform.
|
||
def _valid_civil_r? (y, m, d, sg=GREGORIAN) # :nodoc:
|
||
if m < 0
|
||
m += 13
|
||
m += 13
|
||
end
|
||
if d < 0
|
||
return unless j = find_ldom(y, m, sg)
|
||
ny, nm, nd = jd_to_civil(j + d + 1, sg)
|
||
return unless [ny, nm] == [y, m]
|
||
d = nd
|
||
return unless j = find_ldom(y, m, sg)
|
||
ny, nm, nd = jd_to_civil(j + d + 1, sg)
|
||
return unless [ny, nm] == [y, m]
|
||
d = nd
|
||
end
|
||
jd = civil_to_jd(y, m, d, sg)
|
||
return unless [y, m, d] == jd_to_civil(jd, sg)
|
||
... | ... | |
# +sg+ specifies the Day of Calendar Reform.
|
||
def _valid_commercial_r? (y, w, d, sg=GREGORIAN) # :nodoc:
|
||
if d < 0
|
||
d += 8
|
||
d += 8
|
||
end
|
||
if w < 0
|
||
ny, nw, =
|
||
jd_to_commercial(commercial_to_jd(y + 1, 1, 1, sg) + w * 7, sg)
|
||
return unless ny == y
|
||
w = nw
|
||
ny, nw, =
|
||
jd_to_commercial(commercial_to_jd(y + 1, 1, 1, sg) + w * 7, sg)
|
||
return unless ny == y
|
||
w = nw
|
||
end
|
||
jd = commercial_to_jd(y, w, d, sg)
|
||
return unless [y, w, d] == jd_to_commercial(jd, sg)
|
||
... | ... | |
def _valid_weeknum_r? (y, w, d, f, sg=GREGORIAN) # :nodoc:
|
||
if d < 0
|
||
d += 7
|
||
d += 7
|
||
end
|
||
if w < 0
|
||
ny, nw, =
|
||
jd_to_weeknum(weeknum_to_jd(y + 1, 1, f, f, sg) + w * 7, f, sg)
|
||
return unless ny == y
|
||
w = nw
|
||
ny, nw, =
|
||
jd_to_weeknum(weeknum_to_jd(y + 1, 1, f, f, sg) + w * 7, f, sg)
|
||
return unless ny == y
|
||
w = nw
|
||
end
|
||
jd = weeknum_to_jd(y, w, d, f, sg)
|
||
return unless [y, w, d] == jd_to_weeknum(jd, f, sg)
|
||
... | ... | |
def _valid_nth_kday_r? (y, m, n, k, sg=GREGORIAN) # :nodoc:
|
||
if k < 0
|
||
k += 7
|
||
k += 7
|
||
end
|
||
if n < 0
|
||
ny, nm = (y * 12 + m).divmod(12)
|
||
nm, = (nm + 1) .divmod(1)
|
||
ny, nm, nn, =
|
||
jd_to_nth_kday(nth_kday_to_jd(ny, nm, 1, k, sg) + n * 7, sg)
|
||
return unless [ny, nm] == [y, m]
|
||
n = nn
|
||
ny, nm = (y * 12 + m).divmod(12)
|
||
nm, = (nm + 1) .divmod(1)
|
||
ny, nm, nn, =
|
||
jd_to_nth_kday(nth_kday_to_jd(ny, nm, 1, k, sg) + n * 7, sg)
|
||
return unless [ny, nm] == [y, m]
|
||
n = nn
|
||
end
|
||
jd = nth_kday_to_jd(y, m, n, k, sg)
|
||
return unless [y, m, n, k] == jd_to_nth_kday(jd, sg)
|
||
... | ... | |
min += 60 if min < 0
|
||
s += 60 if s < 0
|
||
return unless ((0...24) === h &&
|
||
(0...60) === min &&
|
||
(0...60) === s) ||
|
||
(24 == h &&
|
||
0 == min &&
|
||
0 == s)
|
||
(0...60) === min &&
|
||
(0...60) === s) ||
|
||
(24 == h &&
|
||
0 == min &&
|
||
0 == s)
|
||
time_to_day_fraction(h, min, s)
|
||
end
|
||
... | ... | |
def self.new!(ajd=0, of=0, sg=ITALY)
|
||
jd, df = ajd_to_jd(ajd, 0)
|
||
if !(Fixnum === jd) ||
|
||
jd < sg || df !=0 || of != 0 ||
|
||
jd < sg || df !=0 || of != 0 ||
|
||
jd < -327 || jd > 366963925
|
||
return new_r!(ajd, of, sg)
|
||
end
|
||
... | ... | |
def self.complete_frags(elem) # :nodoc:
|
||
i = 0
|
||
g = [[:time, [:hour, :min, :sec]],
|
||
[nil, [:jd]],
|
||
[:ordinal, [:year, :yday, :hour, :min, :sec]],
|
||
[:civil, [:year, :mon, :mday, :hour, :min, :sec]],
|
||
[:commercial, [:cwyear, :cweek, :cwday, :hour, :min, :sec]],
|
||
[:wday, [:wday, :hour, :min, :sec]],
|
||
[:wnum0, [:year, :wnum0, :wday, :hour, :min, :sec]],
|
||
[:wnum1, [:year, :wnum1, :wday, :hour, :min, :sec]],
|
||
[nil, [:cwyear, :cweek, :wday, :hour, :min, :sec]],
|
||
[nil, [:year, :wnum0, :cwday, :hour, :min, :sec]],
|
||
[nil, [:year, :wnum1, :cwday, :hour, :min, :sec]]].
|
||
[nil, [:jd]],
|
||
[:ordinal, [:year, :yday, :hour, :min, :sec]],
|
||
[:civil, [:year, :mon, :mday, :hour, :min, :sec]],
|
||
[:commercial, [:cwyear, :cweek, :cwday, :hour, :min, :sec]],
|
||
[:wday, [:wday, :hour, :min, :sec]],
|
||
[:wnum0, [:year, :wnum0, :wday, :hour, :min, :sec]],
|
||
[:wnum1, [:year, :wnum1, :wday, :hour, :min, :sec]],
|
||
[nil, [:cwyear, :cweek, :wday, :hour, :min, :sec]],
|
||
[nil, [:year, :wnum0, :cwday, :hour, :min, :sec]],
|
||
[nil, [:year, :wnum1, :cwday, :hour, :min, :sec]]].
|
||
collect{|k, a| e = elem.values_at(*a).compact; [k, a, e]}.
|
||
select{|k, a, e| e.size > 0}.
|
||
sort_by{|k, a, e| [e.size, i -= 1]}.last
|
||
... | ... | |
case g[0]
|
||
when :ordinal
|
||
elem[:year] ||= d.year
|
||
elem[:yday] ||= 1
|
||
elem[:year] ||= d.year
|
||
elem[:yday] ||= 1
|
||
when :civil
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:mon] ||= 1
|
||
elem[:mday] ||= 1
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:mon] ||= 1
|
||
elem[:mday] ||= 1
|
||
when :commercial
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:cweek] ||= 1
|
||
elem[:cwday] ||= 1
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:cweek] ||= 1
|
||
elem[:cwday] ||= 1
|
||
when :wday
|
||
elem[:jd] ||= (d - d.wday + elem[:wday]).jd
|
||
elem[:jd] ||= (d - d.wday + elem[:wday]).jd
|
||
when :wnum0
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:wnum0] ||= 0
|
||
elem[:wday] ||= 0
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:wnum0] ||= 0
|
||
elem[:wday] ||= 0
|
||
when :wnum1
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:wnum1] ||= 0
|
||
elem[:wday] ||= 1
|
||
g[1].each do |e|
|
||
break if elem[e]
|
||
elem[e] = d.__send__(e)
|
||
end
|
||
elem[:wnum1] ||= 0
|
||
elem[:wday] ||= 1
|
||
end
|
||
end
|
||
if g && g[0] == :time
|
||
if self <= DateTime
|
||
d ||= Date.today
|
||
elem[:jd] ||= d.jd
|
||
d ||= Date.today
|
||
elem[:jd] ||= d.jd
|
||
end
|
||
end
|
||
... | ... | |
catch :jd do
|
||
a = elem.values_at(:jd)
|
||
if a.all?
|
||
if jd = _valid_jd_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_jd_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
a = elem.values_at(:year, :yday)
|
||
if a.all?
|
||
if jd = _valid_ordinal_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_ordinal_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
a = elem.values_at(:year, :mon, :mday)
|
||
if a.all?
|
||
if jd = _valid_civil_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_civil_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
a = elem.values_at(:cwyear, :cweek, :cwday)
|
||
if a[2].nil? && elem[:wday]
|
||
a[2] = elem[:wday].nonzero? || 7
|
||
a[2] = elem[:wday].nonzero? || 7
|
||
end
|
||
if a.all?
|
||
if jd = _valid_commercial_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_commercial_r?(*(a << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
a = elem.values_at(:year, :wnum0, :wday)
|
||
if a[2].nil? && elem[:cwday]
|
||
a[2] = elem[:cwday] % 7
|
||
a[2] = elem[:cwday] % 7
|
||
end
|
||
if a.all?
|
||
if jd = _valid_weeknum_r?(*(a << 0 << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_weeknum_r?(*(a << 0 << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
a = elem.values_at(:year, :wnum1, :wday)
|
||
if a[2]
|
||
a[2] = (a[2] - 1) % 7
|
||
a[2] = (a[2] - 1) % 7
|
||
end
|
||
if a[2].nil? && elem[:cwday]
|
||
a[2] = (elem[:cwday] - 1) % 7
|
||
a[2] = (elem[:cwday] - 1) % 7
|
||
end
|
||
if a.all?
|
||
if jd = _valid_weeknum_r?(*(a << 1 << sg))
|
||
throw :jd, jd
|
||
end
|
||
if jd = _valid_weeknum_r?(*(a << 1 << sg))
|
||
throw :jd, jd
|
||
end
|
||
end
|
||
end
|
||
end
|
||
... | ... | |
def once(*ids) # :nodoc: -- restricted
|
||
for id in ids
|
||
module_eval <<-"end;"
|
||
alias_method :__#{id.object_id}__, :#{id.to_s}
|
||
private :__#{id.object_id}__
|
||
def #{id.to_s}(*args)
|
||
__ca__[#{id.object_id}] ||= __#{id.object_id}__(*args)
|
||
end
|
||
end;
|
||
module_eval <<-"end;"
|
||
alias_method :__#{id.object_id}__, :#{id.to_s}
|
||
private :__#{id.object_id}__
|
||
def #{id.to_s}(*args)
|
||
__ca__[#{id.object_id}] ||= __#{id.object_id}__(*args)
|
||
end
|
||
end;
|
||
end
|
||
end # <<dummy
|
||
... | ... | |
def leap_r? # :nodoc:
|
||
jd_to_civil(civil_to_jd(year, 3, 1, fix_style) - 1,
|
||
fix_style)[-1] == 29
|
||
fix_style)[-1] == 29
|
||
end
|
||
once :leap_r?
|
||
... | ... | |
case n
|
||
when Numeric
|
||
if Float === n
|
||
n = Rational((n * 86400000000000).round, 86400000000000)
|
||
n = Rational((n * 86400000000000).round, 86400000000000)
|
||
end
|
||
return self.class.new_r!(ajd + n, offset, start)
|
||
end
|
||
... | ... | |
case x
|
||
when Numeric
|
||
if Float === x
|
||
x = Rational((x * 86400000000000).round, 86400000000000)
|
||
x = Rational((x * 86400000000000).round, 86400000000000)
|
||
end
|
||
return self.class.new_r!(ajd - x, offset, start)
|
||
when Date
|
||
... | ... | |
when Date; return jd == other.jd
|
||
else
|
||
begin
|
||
l, r = other.coerce(self)
|
||
return l === r
|
||
l, r = other.coerce(self)
|
||
return l === r
|
||
rescue NoMethodError
|
||
end
|
||
end
|
||
... | ... | |
sf, ssf = (sf * 1000000000).divmod(1)
|
||
odf, osf = (of * 86400).divmod(1)
|
||
if !(Fixnum === jd) ||
|
||
jd < sg || ssf != 0 || osf != 0 ||
|
||
jd < sg || ssf != 0 || osf != 0 ||
|
||
jd < -327 || jd > 366963925
|
||
return new_r!(ajd, of, sg)
|
||
end
|
||
... | ... | |
def self.jd_r(jd=0, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_jd_r?(jd, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
def self.ordinal_r(y=-4712, d=1, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_ordinal_r?(y, d, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
def self.civil_r(y=-4712, m=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_civil_r?(y, m, d, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
def self.commercial_r(y=-4712, w=1, d=1, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_commercial_r?(y, w, d, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
def self.weeknum(y=-4712, w=0, d=1, f=0, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_weeknum_r?(y, w, d, f, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
def self.nth_kday(y=-4712, m=1, n=1, k=1, h=0, min=0, s=0, of=0, sg=ITALY) # :nodoc:
|
||
unless (jd = _valid_nth_kday_r?(y, m, n, k, sg)) &&
|
||
(fr = _valid_time_r?(h, min, s))
|
||
(fr = _valid_time_r?(h, min, s))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
if String === of
|
||
... | ... | |
elem = rewrite_frags(elem)
|
||
elem = complete_frags(elem)
|
||
unless (jd = valid_date_frags?(elem, sg)) &&
|
||
(fr = valid_time_frags?(elem))
|
||
(fr = valid_time_frags?(elem))
|
||
raise ArgumentError, 'invalid date'
|
||
end
|
||
fr += (elem[:sec_fraction] || 0) / 86400
|
||
... | ... | |
def to_s_r # :nodoc: # 4p
|
||
format('%.4d-%02d-%02dT%02d:%02d:%02d%s',
|
||
year, mon, mday, hour, min, sec, zone)
|
||
year, mon, mday, hour, min, sec, zone)
|
||
end
|
||
private :to_s_r
|
||
... | ... | |
def to_time
|
||
d = new_offset(0)
|
||
d.instance_eval do
|
||
Time.utc(year, mon, mday, hour, min, sec +
|
||
sec_fraction)
|
||
Time.utc(year, mon, mday, hour, min, sec + sec_fraction)
|
||
end.
|
||
getlocal
|
||
end
|