我确实找到了这个问题,但我仍然在寻找以下问题的简单解决方案:
API 调用返回以下格式,看起来像是它们正在使用Time.zone.to_s
irb> ShopifyAPI::Shop.current.timezone
=> "(GMT-08:00) Pacific Time (US & Canada)"
我想将"(GMT-08:00) Pacific Time (US & Canada)"
解析为 Ruby 类并输出时区名称"Pacific Time (US & Canada)"
或者,我可以剥离"(GMT-08:00)"
偏移量并留下一个干净的时区名称"Pacific Time (US & Canada)"
但这似乎是一个混乱的字符串编辑解决方案。
ShopifyAPI::Shop.current
返回此处记录的属性。 是的,timezone
是其中之一,但它旨在成为显示名称,而不是您应该解析的内容。
请改用 iana_timezone
属性,该属性将为您提供 IANA 时区标识符,例如 America/Los_Angeles
。它们与Rails以及Ruby的tzinfo gem兼容,并且还用于许多其他平台。
irb> ShopifyAPI::Shop.current.timezone
=> "(GMT-08:00) Pacific Time (US & Canada)"
irb> ShopifyAPI::Shop.current.iana_timezone
=> "America/Los_Angeles"
如果你想从那里得到一个 Rails 时区,你可以使用 ActiveSupport::TimeZone
中定义的MAPPING
常量。 尽管如果可能的话,我会避免使用它,出于底部"Rails 时区标识符"部分中时区标签 wiki 中提到的原因。
如果您对将要接收的 API 和字符串格式有信心,您可以将字符串操作为
string.partition(')').last.strip
# => Pacific Time (US & Canada)