0

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

繰り返しになりますが、必要なのはサーバー時間がクライアント時間を反映することだけです。したがって、Time.now、DateTime.now、Date.todayなどの操作はすべてクライアント時間とともに表示されます。

4

2 に答える 2

5

時刻を表示するときは、UTC オフセットを適用する必要があります。

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

于 2012-04-19T15:05:07.023 に答える
5

これをチェックして

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は、指定されたタイムゾーンの時間を提供します。

ありがとう、アミット・パテル

于 2012-04-20T07:53:07.823 に答える