2012-04-19 15 views
0

私の最終目標は、HerokuサーバーのTime.nowを、JavaScriptから新しいDate.now()を実行した時と同じにすることです。私が今まで行ってきたことは、JavaScriptからタイムゾーンオフセットをキャッチし、適切なクライアントタイムゾーンでTime.zoneをRailsに設定していたので、Time.zoneは正しいタイムゾーンです。しかし、Time.nowは、Time.zoneに入力するのではなく、実際のタイムゾーンを反映しています。私はそれが私が最初にやろうとしていることではないと思います。サーバ時間をクライアント時間に変更するには?

もう一度、私が望むのは、サーバーの時刻がクライアントの時刻を反映するため、Time.nowやDateTime.nowやDate.todayなどの操作はクライアントの時刻とともに表示されます。

+0

? – SLaks

+0

私は彼らが異なる時間データを持つアプリケーションの異なるインスタンスを持つと思います。 – Andy

+0

間違っています。彼らは2つのスレッドを取得します。 – SLaks

答えて

5

と表示されている場合は、UTCオフセットを適用する必要があります。

すべてのサーバー側の時間の計算または格納は、UTCで行う必要があります。

+0

私に参考になるコードを教えていただけますか?ありがとう – Andy

+0

申し訳ありません。私はRubyについてよく知らない。基本的には、時間を表示するたびに必要な時間数を追加します。 – SLaks

4

チェックこの

1.8.7 :001 > Time.zone 
=> #<ActiveSupport::TimeZone:0xb740d1b8 @tzinfo=#<TZInfo::TimezoneProxy: Etc/UTC>, @utc_offset=nil, @name="UTC", @current_period=nil> 
1.8.7 :002 > Time.now 
=> Fri Apr 20 13:13:53 +0530 2012 
1.8.7 :003 > Time.zone.now 
=> Fri, 20 Apr 2012 07:43:59 UTC +00:00 
1.8.7 :004 > Time.zone = "Helsinki" 
=> "Helsinki" 
1.8.7 :005 > Time.zone 
=> #<ActiveSupport::TimeZone:0xb70ab830 @tzinfo=#<TZInfo::TimezoneProxy: Europe/Helsinki>, @utc_offset=nil, @name="Helsinki", @current_period=nil> 
1.8.7 :006 > Time.now 
=> Fri Apr 20 13:14:48 +0530 2012 
1.8.7 :007 > Time.zone.now 
=> Fri, 20 Apr 2012 10:45:10 EEST +03:00 
1.8.7 :008 > Time.zone.now.to_time.strftime("%c").to_datetime 
=> Fri, 20 Apr 2012 10:47:01 +0000 
1.8.7 :009 > 

のでTime.zone.now.to_time.strftime("%c").to_datetimeは常にサーバーのタイムゾーンで時間を与えるUTC

Time.nowとしてあなたのユーザーのタイムゾーンの現在時刻を与えるだろう。 Time.zone.nowは、指定されたタイムゾーンで時刻を返します。あなたが同時に2つの異なる大陸からの二人のユーザーを持っている場合はどう

おかげで、 アミットパテル

関連する問題