如何添加时区与我的时间戳?
问题描述:
我有时区为字符串(如“(GMT + 00:00)UTC”,“(GMT + 05:30)Chennai”等)。我还有时间戳星期一,2016年8月1日17:00:00 UTC +00:00。我需要根据时区更改时间戳记时间。时间戳中的时区也不应该改变。我使用rails 4.0.0。每一次尝试都会告诉字符串无法转换。任何人都可以请帮助。如何添加时区与我的时间戳?
答
首先,你需要从你的字符串中检索时区:
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
是做的时间段强从何而来?也许你可以使用由ActiveSupport :: TimeZone提供的名称列表来代替? – spickermann