我的时区为字符串(例如"(GMT + 00:00)UTC","(GMT + 05:30)Chennai" 等等上。)。我也有时间戳,如周一,2016年8月1日17:00:00 UTC +00:00 。我需要根据时区更改时间戳时间。此外,时间戳中的时区也不应更改。我使用rails 4.0.0。每次尝试都会告诉字符串无法转换。有人可以帮忙解决这个问题吗。
答案 0 :(得分:1)
首先,您需要从字符串中检索时区:
tz_as_string = "(GMT+05:30) Chennai"
tz_name = tz_as_string[/(?<=\) ).*/] # ⇒ "Chennai"
tz_timezone = ActiveSupport::TimeZone::MAPPING[tz_name] #⇒ "Asia/Kolkata"
,最后:
tz = ActiveSupport::TimeZone.new tz_timezone
#⇒ #<ActiveSupport::TimeZone:0x000000107a91c0 @name="Asia/Kolkata", ...
Time.parse('Mon, 01 Aug 2016 17:00:00 UTC +00:00').in_time_zone tz
#⇒ Mon, 01 Aug 2016 22:30:00 IST +05:30