如何将utc时间转换为+05:30的本地时间时区

时间:2016-07-06 06:49:36

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

我正在尝试将UTC时间转换为用户本地时间。对于本地时区,如果值为:

user_id   time_zone
 23       +05:30
 25       +10:00

这是足够的信息吗?我怎么能用这个转换。在文档中,我能找到的就是这种方法。

Time.now.in_time_zone('Eastern Time (US & Canada)') 

但我没有。或者我应该使用+10:00

获取此Eastern Time (US & Canada)

我正试图在用户的上午10点触发推送通知。

1 个答案:

答案 0 :(得分:2)

%w|+05:30 +10:00|.map do |time_zone|
  hours, mins = time_zone.split(':').map(&:to_i).map(&:abs)
  sign = time_zone[0] == '-' ? -1 : 1
  Time.now.in_time_zone(ActiveSupport::TimeZone[(hours + 1.0 * mins / 60]) * sign)
end
#⇒ [Wed, 06 Jul 2016 12:54:10 IST +05:30, Wed, 06 Jul 2016 17:24:10 AEST +10:00]