Project

General

Profile

Actions

Bug #20327

closed

Time.new behaves differently when passing a zone as timezone object

Added by davekaro (Dave Kroondyk) 2 months ago. Updated about 1 month ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 3.3.0 (2023-12-25 revision 5124f9ac75) [arm64-darwin23]
[ruby-core:117071]

Description

Time.new with a timezone object for the zone argument produces incorrect utc_offset when passing seconds as a Rational.

require "tzinfo"

# This correctly outputs 0 as the utc_offset
puts Time.new(2024, 1, 1, 23, 59, 59.9r, "UTC").utc_offset                           # => 0

# Inspecting the time looks correct 
puts Time.new(2024, 1, 1, 23, 59, 59.9r, "UTC").inspect                              # => "2024-01-01 23:59:59.9 UTC"

# Using a timezone object for the zone, results are different
puts Time.new(2024, 1, 1, 23, 59, 59.9r, TZInfo::Timezone.get("Etc/UTC")).utc_offset # => (9/10)

# Inspecting the time object reveals the odd offset
puts Time.new(2024, 1, 1, 23, 59, 59.9r, TZInfo::Timezone.get("Etc/UTC")).inspect    # => "2024-01-01 23:59:59.9 +000001"

Actions #1

Updated by nobu (Nobuyoshi Nakada) 2 months ago

  • Status changed from Open to Closed

Applied in changeset git|d3279a0c11ca45ca85027e7eb74dc4aac52c478b.


[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.

Actions #2

Updated by nobu (Nobuyoshi Nakada) 2 months ago

  • Backport changed from 3.0: UNKNOWN, 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED

Updated by naruse (Yui NARUSE) about 2 months ago

  • Backport changed from 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: REQUIRED to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONE

ruby_3_3 821719a505bbc628ddd80b90ae892666006eada1 merged revision(s) d3279a0c11ca45ca85027e7eb74dc4aac52c478b.

Updated by nagachika (Tomoyuki Chikanaga) about 1 month ago

  • Backport changed from 3.0: REQUIRED, 3.1: REQUIRED, 3.2: REQUIRED, 3.3: DONE to 3.0: REQUIRED, 3.1: REQUIRED, 3.2: DONE, 3.3: DONE

ruby_3_2 e6bf38a6e7fbae0097fdf51e3c752820a2c58ae4 merged revision(s) d3279a0c11ca45ca85027e7eb74dc4aac52c478b.

Actions

Also available in: Atom PDF

Like0
Like1Like0Like0Like0