[ruby-core:118833] [Ruby master Bug#20674] Time zone conversion issue Time.at

Issue #20674 has been reported by moustafasallam (Moustafa Sallam Mahmoud). ---------------------------------------- Bug #20674: Time zone conversion issue Time.at https://bugs.ruby-lang.org/issues/20674 * Author: moustafasallam (Moustafa Sallam Mahmoud) * Status: Open * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- # Time.at converts the epoch time to the local time zone But there seems a weird case with Central Time (US & Canada) # where it convert it one hour earlier for example # take this timestamp 1728018000 when converted it to Central Time (US & Canada) with Time.at # => Time.zone = "Central Time (US & Canada)" # => "Central Time (US & Canada)" # => Time.at(1728018000) # => 2024-10-04 01:00:00 -0400 # While using ActiveSupport::TimeZone # ActiveSupport::TimeZone['Central Time (US & Canada)'].at(1728018000) # => Fri, 04 Oct 2024 00:00:00.000000000 CDT -05:00 # so Time.at convert it to -4 while ActiveSupport::TimeZone convert it to -5 -- https://bugs.ruby-lang.org/

Issue #20674 has been updated by nobu (Nobuyoshi Nakada). Description updated Status changed from Open to Rejected `Time.zone=` method is not defined in Ruby itself, probably defined by ActiveSupport. So `Time.at` is not affected by it at all, and -4 would have come from your "TZ" environment variable or system configuration. ---------------------------------------- Bug #20674: Time zone conversion issue Time.at https://bugs.ruby-lang.org/issues/20674#change-109401 * Author: moustafasallam (Moustafa Sallam Mahmoud) * Status: Rejected * ruby -v: ruby 3.2.2 * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- `Time.at` converts the epoch time to the local time zone But there seems a weird case with Central Time (US & Canada) where it convert it one hour earlier for example take this timestamp 1728018000 when converted it to Central Time (US & Canada) with `Time.at` => Time.zone = "Central Time (US & Canada)" => "Central Time (US & Canada)" => Time.at(1728018000) => 2024-10-04 01:00:00 -0400 While using `ActiveSupport::TimeZone` ActiveSupport::TimeZone['Central Time (US & Canada)'].at(1728018000) => Fri, 04 Oct 2024 00:00:00.000000000 CDT -05:00 so `Time.at` convert it to -4 while `ActiveSupport::TimeZone` convert it to -5 -- https://bugs.ruby-lang.org/

Issue #20674 has been updated by nobu (Nobuyoshi Nakada). Status changed from Rejected to Third Party's Issue ```ruby require 'active_support' require 'active_support/core_ext' Time.zone = "Central Time (US & Canada)" p Time.at(1728018000, in: Time.zone) #=> 2024-10-04 00:00:00 -0500 ``` ---------------------------------------- Bug #20674: Time zone conversion issue Time.at https://bugs.ruby-lang.org/issues/20674#change-109402 * Author: moustafasallam (Moustafa Sallam Mahmoud) * Status: Third Party's Issue * ruby -v: ruby 3.2.2 * Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN ---------------------------------------- `Time.at` converts the epoch time to the local time zone But there seems a weird case with Central Time (US & Canada) where it convert it one hour earlier for example take this timestamp 1728018000 when converted it to Central Time (US & Canada) with `Time.at` => Time.zone = "Central Time (US & Canada)" => "Central Time (US & Canada)" => Time.at(1728018000) => 2024-10-04 01:00:00 -0400 While using `ActiveSupport::TimeZone` ActiveSupport::TimeZone['Central Time (US & Canada)'].at(1728018000) => Fri, 04 Oct 2024 00:00:00.000000000 CDT -05:00 so `Time.at` convert it to -4 while `ActiveSupport::TimeZone` convert it to -5 -- https://bugs.ruby-lang.org/
participants (2)
-
moustafasallam (Moustafa Sallam Mahmoud)
-
nobu (Nobuyoshi Nakada)