2011-12-15 13 views
1

In Rail 3.0.10私はTime.zoneを使用して、米国内に投稿されたコースの時間をユーザーがどのように見ているかを変更しています。しかし、タイムゾーンを変更すると、私は時間が変更さだけでなく、しかし、それがあることは表示されませんTime.zoneの変化に適応するように相殺するために期待するRailsタイムゾーン:Time.currentを変更しないTime.current

Time.zone = TZInfo::Timezone.get('America/Los_Angeles') 
Time.zone  # => (GMT-08:00) America/Los_Angeles 
Time.current # => 2011-10-30 14:00:00 -0700 


Time.zone = TZInfo::Timezone.get('America/Chicago') 
Time.zone  # => (GMT-06:00) America/Chicago 
Time.current # => 2011-10-30 14:00:00 -0700 

を期待するように動作していないようですそれはそのように振る舞います。

私は、カリフォルニア州の午後9時に終了するコースをカリフォルニアのLAで作成し、異なるタイムゾーンのユーザーがコースが非アクティブになり、同じ時間ではなく異なる時間に消えてしまう問題に遭遇しています時間。誰でもTime.zoneが実際に行っている設定と、午後11時(CST)に正しく消えるように午後9時(PST)に終了するコースをどのように取得することができますか?

答えて

4

あなたが設定したタイムゾーンの現在時刻を与える

Time.zone.now 

これで

Time.current 

を交換してください。

+0

おかげで、SOで別のポスターが間違って私はドキュメントをチェックしている必要がありますね、現在は基本的にTime.zone.nowの別名であると述べました。ヘルプを評価してください – Schneems

+0

http://apidock.com/rails/v3.0.5/Time/current/classとhttp://apidock.com/rails/v3.0.7/Time/current/classでご覧くださいTime.currentの動作がRails 3.0.5とRails 3.0.7の間で変更されていることがわかります。 Rails 3.0.7より前のバージョンでは、Time.zone_defaultが設定されていればTime.zone.nowしか返されませんでした。それ以外の場合は、Time.nowを返します。 > 3.0.5を使用していますか? – jbrowning

0
t = Time.now 
Time.zone = TZInfo::Timezone.get('America/Los_Angeles') 
t.in_time_zone 

それとも

Time.now.in_time_zone('America/Los_Angeles') 
関連する問題