如何将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?
答案 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
为零的时间,否则会导致错误。