gpt4 book ai didi

ruby - 如何从 utc 偏移量获取 tz 标识符字符串

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:04 25 4
gpt4 key购买 nike

如何在考虑 DST 更改的情况下以秒为单位从 utc 偏移量获取 tzinfo 格式的时区,即 America/Toronto

例如,DST 设置上次更改时间是 2014 年 3 月 9 日凌晨 2:00。查看偏移量差异

Varinder $ irb

2.1.0 :001 > Time.local(2014,03,9,1,59)
=> 2014-03-09 01:59:00 -0500

2.1.0 :002 > Time.local(2014,03,9,2,00)
=> 2014-03-09 03:00:00 -0400
2.1.0 :003 >

2.1.0 :006 > Time.local(2014,03,9,2,00).zone
=> "EDT" # I need America/Toronto format

对于这两个时间示例,计算出的 tzinfo 字符串应该相同,因为只有偏移量的差异是由于 DST。

最佳答案

您必须弄清楚 DST 问题,但这可能会让您到达那里(我在 PST...)

> offset = Time.local(2014,03,9,1,59).utc_offset
=> -28800
> ActiveSupport::TimeZone.all.select{|tz| tz.utc_offset == offset}
=> [#<ActiveSupport::TimeZone:0x007fbcacd075a8 @name="Pacific Time (US & Canada)", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: America/Los_Angeles>, @current_period=#<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionInfo: #<TZInfo::TimeOrDateTime: 1394359200>,#<TZInfo::TimezoneOffsetInfo: -28800,3600,PDT>>,#<TZInfo::TimezoneTransitionInfo: #<TZInfo::TimeOrDateTime: 1414918800>,#<TZInfo::TimezoneOffsetInfo: -28800,0,PST>>>>, #<ActiveSupport::TimeZone:0x007fbcacd07530 @name="Tijuana", @utc_offset=nil, @tzinfo=#<TZInfo::TimezoneProxy: America/Tijuana>, @current_period=#<TZInfo::TimezonePeriod: #<TZInfo::TimezoneTransitionInfo: #<TZInfo::TimeOrDateTime: 1394359200>,#<TZInfo::TimezoneOffsetInfo: -28800,3600,PDT>>,#<TZInfo::TimezoneTransitionInfo: #<TZInfo::TimeOrDateTime: 1414918800>,#<TZInfo::TimezoneOffsetInfo: -28800,0,PST>>>>]

关于ruby - 如何从 utc 偏移量获取 tz 标识符字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22427951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com