gpt4 book ai didi

ruby-on-rails - Rails:如何使当前时区与 ActiveSupport::TimeZone[zone].parse() 兼容?

转载 作者:行者123 更新时间:2023-12-03 01:22:14 26 4
gpt4 key购买 nike

方法如何获取当前的 Time.zone 并将其转换为ActiveSupport::TimeZone[some_zone].parse()可用的格式?

看起来很奇怪,Time.zone.to_s返回一个不能与ActiveSupport::TimeZone[zone].parse()一起使用的字符串。

Time.zone.to_s返回"(GMT-08:00) Pacific Time (US & Canada)"

但是ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]nil .

ActiveSupport::TimeZone["(GMT-08:00) Pacific Time (US & Canada)"]
# => nil

ActiveSupport::TimeZone["Pacific Time (US & Canada)"]
# => (GMT-08:00) Pacific Time (US & Canada)

最佳答案

使用Time.zone.name,而不是Time.zone.to_s

[1] pry(main)> Time.zone.to_s
=> "(GMT-05:00) Eastern Time (US & Canada)"
[2] pry(main)> Time.zone.name
=> "Eastern Time (US & Canada)"
[3] pry(main)> ActiveSupport::TimeZone[Time.zone.name]
=> (GMT-05:00) Eastern Time (US & Canada)
<小时/>

至于我如何得到这个(根据要求),我只知道name方法存在于Time.zone上。如果我不知道这一点,我会检查文档。如果它不在那里,正如你所说的(它是, here ),我通常用 Pry 检查类/模块/对象。 。 Pry 是 irb 的替代品,它可以让我做类似的事情

[1] pry(main)> cd Time.zone
[2] pry(#<ActiveSupport::TimeZone>):1> ls -m
Comparable#methods: < <= == > >= between?
ActiveSupport::TimeZone#methods: <=> =~ at formatted_offset local local_to_utc name now parse period_for_local period_for_utc to_s today tzinfo utc_offset utc_to_local
self.methods: __pry__
[3] pry(#<ActiveSupport::TimeZone>):1> name
=> "Eastern Time (US & Canada)"
上面的 [2] 行上的

ls -m 打印对象上的方法(如果向右滚动,您将看到 name 在那里列出)。您可以在 [3] 中看到,我可以直接在我所在的 Time.zone 对象上调用 name 并获取您的输出正在寻找。

关于ruby-on-rails - Rails:如何使当前时区与 ActiveSupport::TimeZone[zone].parse() 兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13887643/

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