Project

General

Profile

Actions

Bug #20674

closed

Time zone conversion issue Time.at

Added by moustafasallam (Moustafa Sallam Mahmoud) 10 months ago. Updated 10 months ago.

Status:
Rejected
Assignee:
-
Target version:
-
ruby -v:
ruby 3.2.2
[ruby-core:118833]

Description

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

Actions #1

Updated by moustafasallam (Moustafa Sallam Mahmoud) 10 months ago

  • ruby -v set to ruby 3.2.2

Updated by nobu (Nobuyoshi Nakada) 10 months ago ยท Edited

  • Description updated (diff)
  • Status changed from Open to Rejected

Time.zone= method is not defined in Ruby itself, probably defined by ActiveSupport, I don't know from where it comes.

So Time.at is not affected by it at all, and -4 would have come from your "TZ" environment variable or system configuration.

Updated by nobu (Nobuyoshi Nakada) 10 months ago

  • Status changed from Rejected to Third Party's Issue
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
Actions #4

Updated by nobu (Nobuyoshi Nakada) 10 months ago

  • Status changed from Third Party's Issue to Rejected
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0