mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02:00
[Bug #20327] Do not count subsecond to calculate UTC offset
Assume that there will never be any time zones with UTC offsets that are subseconds. Historically, UTC offset has only been used down to the second.
This commit is contained in:
parent
e13fd48f55
commit
d3279a0c11
2 changed files with 9 additions and 1 deletions
|
@ -695,6 +695,13 @@ module TestTimeTZ::WithTZ
|
|||
assert_equal(t.dst?, t2.dst?)
|
||||
end
|
||||
|
||||
def subtest_fractional_second(time_class, tz, tzarg, tzname, abbr, utc_offset)
|
||||
t = time_class.new(2024, 1, 1, 23, 59, 59.9r, tzarg)
|
||||
assert_equal(utc_offset[t.dst? ? 1 : 0], t.utc_offset)
|
||||
t = time_class.new(2024, 7, 1, 23, 59, 59.9r, tzarg)
|
||||
assert_equal(utc_offset[t.dst? ? 1 : 0], t.utc_offset)
|
||||
end
|
||||
|
||||
def test_invalid_zone
|
||||
make_timezone("INVALID", "INV", 0)
|
||||
rescue => e
|
||||
|
@ -719,6 +726,7 @@ module TestTimeTZ::WithTZ
|
|||
"Asia/Tokyo" => ["JST", +9*3600],
|
||||
"America/Los_Angeles" => ["PST", -8*3600, "PDT", -7*3600],
|
||||
"Africa/Ndjamena" => ["WAT", +1*3600],
|
||||
"Etc/UTC" => ["UTC", 0],
|
||||
}
|
||||
|
||||
def make_timezone(tzname, abbr, utc_offset, abbr2 = nil, utc_offset2 = nil)
|
||||
|
|
2
time.c
2
time.c
|
@ -2346,7 +2346,7 @@ zone_timelocal(VALUE zone, VALUE time)
|
|||
struct time_object *tobj = RTYPEDDATA_GET_DATA(time);
|
||||
wideval_t t, s;
|
||||
|
||||
t = rb_time_unmagnify(tobj->timew);
|
||||
split_second(tobj->timew, &t, &s);
|
||||
tm = tm_from_time(rb_cTimeTM, time);
|
||||
utc = rb_check_funcall(zone, id_local_to_utc, 1, &tm);
|
||||
if (UNDEF_P(utc)) return 0;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue