如何将浮点数转换为时区?

时间:2016-03-30 21:04:36

标签: ruby-on-rails ruby facebook timezone omniauth-facebook

如何将float号码转换为时区?

Facebook使用float打破了时区。

timezone    float (min: -24) (max: 24)
            The person's current timezone offset from UTC

user.timezone = auth.extra.raw_info.timezone在通过Facebook注册时捕获用户的时区位置,例如timezone: -5.0

我想将此转换为timezone: "Eastern Time (US & Canada)"。然后,用户可以通过<%= f.time_zone_select :timezone, ActiveSupport::TimeZone.us_zones %>调整他的时区。

潜在解决方案

t.float    "timezone"
t.string   "time_zone" # somehow turning it into a string after Facebook sets it?

1 个答案:

答案 0 :(得分:1)

您可以使用float中的ActiveSupport::TimeZone类传递作为参数。 http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html

免责声明:部分答案来自此问题的第一部分,How to get timezone from facebook with omniauth?

user.timezone = auth.extra.raw_info.timezone
user.time_zone = ActiveSupport::TimeZone.new(user.timezone).name

您必须考虑user.timezone为零的时间,否则会导致错误。