Ruby on rails 正在分析包含GMT偏移小时数的时区名称字符串

Ruby on rails 正在分析包含GMT偏移小时数的时区名称字符串,ruby-on-rails,ruby,timezone,shopify,Ruby On Rails,Ruby,Timezone,Shopify,我确实找到了,但我仍然在寻找以下问题的简单解决方案: API调用返回以下格式,看起来它们正在使用Time.zone.to\s irb> ShopifyAPI::Shop.current.timezone => "(GMT-08:00) Pacific Time (US & Canada)" 我想将“(GMT-08:00)太平洋时间(美国和加拿大)”解析为一个Ruby类,并输出时区名称“太平洋时间(美国和加拿大)” 或者,我可以去掉(GMT-08:00)偏移量,留下一个干净的

我确实找到了,但我仍然在寻找以下问题的简单解决方案:

API调用返回以下格式,看起来它们正在使用
Time.zone.to\s

irb> ShopifyAPI::Shop.current.timezone
=> "(GMT-08:00) Pacific Time (US & Canada)"
我想将
“(GMT-08:00)太平洋时间(美国和加拿大)”
解析为一个Ruby类,并输出时区名称
“太平洋时间(美国和加拿大)”


或者,我可以去掉
(GMT-08:00)
偏移量,留下一个干净的时区名称
“太平洋时间(美国和加拿大)”
,但这似乎是一个混乱的字符串编辑解决方案。

如果您对将要接收的API和字符串格式有信心,您可以根据需要操作字符串

string.partition(')').last.strip
# => Pacific Time (US & Canada)

shopifigapi::Shop.current
返回属性。是的,
timezone
是其中之一,但它是一个显示名称,而不是您应该解析的名称

相反,请使用
iana\u时区
属性,该属性将为您提供所需的时间,例如
America/Los\u 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时区,可以使用中定义的
映射
常量。尽管我尽可能避免使用它,但出于底部“Rails时区标识符”部分中提到的原因。

谢谢,如果我无法找到将API的Time.Zone.to_s解析回Ruby类的方法,那么我将使用字符串条解决方案谢谢,我错过了API中的iana_时区属性reference@kg. 您的问题是关于从(外部)API解析给定的时区字符串,而这个答案是关于格式化时区的。它是如何解决你的解析问题的?这是一个问题。如何从ShopifAPI中获取可用的时间一标识符是X。解析字符串是Y。