【发布时间】:2016-03-30 21:04:35
【问题描述】:
如何将float 数字转换为时区?
Facebook 使用浮点数分解时区。
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?
【问题讨论】:
-
ActiveSupport::TimeZone.new(user.timezone).name? -
你必须让用户感到抱歉。所以对于你上面的例子:
ActiveSupport::TimeZone.new(-5.0).name -
时区在最好的时候是相当挑剔的。 -5.0 可能是,也可能是any of these,但在夏令时生效的情况下,您指定的实际上是-4.0。
-
啊好吧哈哈感谢@tadman 的澄清。 Facebook 实际上生成了
timezone: -4.0,我对此感到困惑,因为我在佛罗里达州。我想我会在另一天解决这个问题,然后以-5.0为例。现在我不会把它挂在我头上:] -
时区 != 偏移量。因此,这项任务是不可能的。脸书撒谎。这只是用户上次登录时的偏移量。
标签: ruby-on-rails ruby facebook timezone omniauth-facebook