Bug #14034 ยป 0001-Make-Time.parse-respect-timezone-offset-seconds.patch
lib/time.rb | ||
---|---|---|
def zone_offset(zone, year=self.now.year)
|
||
off = nil
|
||
zone = zone.upcase
|
||
if /\A([+-])(\d\d):?(\d\d)\z/ =~ zone
|
||
off = ($1 == '-' ? -1 : 1) * ($2.to_i * 60 + $3.to_i) * 60
|
||
if /\A([+-])(\d\d):?(\d\d)(?::?(\d\d))?\z/ =~ zone
|
||
off = ($1 == '-' ? -1 : 1) * (($2.to_i * 60 + $3.to_i) * 60 + $4.to_i)
|
||
elsif /\A[+-]\d\d\z/ =~ zone
|
||
off = zone.to_i * 3600
|
||
elsif ZoneOffset.include?(zone)
|
test/test_time.rb | ||
---|---|---|
Time.parse("2000-01-01T00:00:00+11:00", nil))
|
||
end
|
||
def test_parse_offset_hour_minute_second
|
||
t = Time.at(-100000000000).utc
|
||
assert_equal(t, Time.parse("1200-02-15 BC 14:13:20-00"))
|
||
assert_equal(t, Time.parse("1200-02-15 BC 14:13:20-00:00"))
|
||
assert_equal(t, Time.parse("1200-02-15 BC 14:13:20-00:00:00"))
|
||
end
|
||
def test_parse_leap_second
|
||
t = Time.utc(1998,12,31,23,59,59)
|
||
assert_equal(t, Time.parse("Thu Dec 31 23:59:59 UTC 1998"))
|