首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将字符串中的活动支持时区对象转换回rails中的对象

将字符串中的活动支持时区对象转换回rails中的对象
EN

Stack Overflow用户
提问于 2017-09-20 18:56:14
回答 3查看 68关注 0票数 1

如何将转换为string的active support time对象转换回object,换句话说,如何从字符串中找到active support对象?

示例:

代码语言:javascript
复制
 a = ActiveSupport::TimeZone.all.first = 
#<ActiveSupport::TimeZone:0x007f8c45bc1848 @name="American Samoa", 
@tzinfo=#<TZInfo::TimezoneProxy: Pacific/Pago_Pago>, @utc_offset=nil>

如果我使用to_s将这个对象转换为一个字符串,我会得到"(GMT-11:00)美国萨摩亚“。

如果我有"(GMT-11:00)美属萨摩亚“,我如何找到物体?

EN

回答 3

Stack Overflow用户

发布于 2017-09-20 19:55:52

这将消除第一对括号之间的所有内容,并获取剩余的字符串:

代码语言:javascript
复制
a = ActiveSupport::TimeZone.all.first.to_s.match(/\(.*?\) (.*)/)[1]

使用...and,您可以找到ActiveSupport::Timezone对象:

ActiveSupport::Timezone[a]

票数 2
EN

Stack Overflow用户

发布于 2017-09-20 19:44:15

代码语言:javascript
复制
# let
timezone_string = '(GMT-11:00) American Samoa'

# let's capture the "American Samoa" substring from above (as an example)
matches = timezone_string.match /\(GMT.*?\) (.*)/
timezone_name = matches[1]

# then we look up the corresponding Timezone object using the "American Samoa" timezone_name
timezone = ActiveSupport::TimeZone[timezone_name]
票数 1
EN

Stack Overflow用户

发布于 2017-09-22 17:23:16

谢谢你的回答,我确实试过了,而且很管用。我也试过这个

代码语言:javascript
复制
tz_value = business_timezone.split(')').second.strip 

它为我提供了名称,并且我正在使用

代码语言:javascript
复制
ActiveSupport::TimeZone[tz_value].
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46320188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档