如何使用我的时间戳添加时区?

时间:2016-08-01 06:48:32

标签: ruby-on-rails ruby ruby-on-rails-4

我的时区为字符串(例如"(GMT + 00:00)UTC","(GMT + 05:30)Chennai" 等等上。)。我也有时间戳,如周一,2016年8月1日17:00:00 UTC +00:00 。我需要根据时区更改时间戳时间。此外,时间戳中的时区也不应更改。我使用rails 4.0.0。每次尝试都会告诉字符串无法转换。有人可以帮忙解决这个问题吗。

1 个答案:

答案 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