2016-03-30 18 views
0

Saat dilimi için float numarasını nasıl dönüştürebilirim?Float numarasını saat dilimine nasıl dönüştürebilirim?

Facebook, float kullanarak saat dilimini azaltır.

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

user.timezone = auth.extra.raw_info.timezone

örneğin timezone: -5.0 için, Facebook üzerinden kaydolduktan bir kullanıcının saat dilimi yerini yakalar.

Bunu dönüştürmek istiyorum timezone: "Eastern Time (US & Canada)". Bir kullanıcı daha sonra saat dilimini <%= f.time_zone_select :timezone, ActiveSupport::TimeZone.us_zones %> üzerinden ayarlayabilir.

Potansiyel Çözüm

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

'ActiveSupport :: TimeZone.new (user.timezone) .name'? –

+0

iyi bir kullanıcı için üzgünüm. Yukarıdaki örneğiniz için: 'ActiveSupport :: TimeZone.new (-5.0) .name' –

+1

Bunu sildim. –

cevap

1

Sen argüman olarak şamandıradaki ActiveSupport::TimeZone sınıf geçmek kullanabilirsiniz. http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html.

Feragatname: Yanıtın bir kısmı bu sorunun birinci bölümünden geliyor, How to get timezone from facebook with omniauth?.

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

Sen user.timezone nil zamanlarda yararlanabileceğiniz hesap vereceğine, aksi takdirde hata verir.

İlgili konular