タイムゾーンで遊んでいて、簡単な登録フォームがあります。ユーザー登録後、ユーザーに現在時刻を表示させたいのですが、どうすればいいですか?
2 に答える
このような情報はサーバー側では利用できないため、Rubyだけでそれを行うことはできません。
1)ユーザーの場所がわかっている場合は、地理的位置を特定してタイムゾーンを決定できます。ただし、geoデータベースから取得したIP範囲にいくつかのタイムゾーンがある場合は、問題になる可能性があります。
2)別の解決策として、JavaScriptを使用して支援することができます。したがって、javascriptを使用すると、タイムゾーンを計算してCookieとして設定し、リクエストオブジェクトからRubyでアクセスできます。(Javascriptでタイムゾーンを取得する方法)
登録時にユーザーに現在のタイムゾーンを尋ねて、ユーザーの詳細を保持することができます。
ActiveSupport(Rails APIの一部として含まれています)には、タイムゾーンを処理するための優れた方法があります。* in_time_zone *を使用して、現在の時刻を別のタイムゾーンの時刻に変換できます。
例として
Time.now.in_time_zone("America/Guyana")
Time.now.in_time_zone(8)
time_zoneキーは、次のAPIドキュメントで確認できます:http://api.rubyonrails.org/classes/ActiveSupport/TimeZone.html
詳細については、TimeWithZone(http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html#method-i-in_time_zone )を参照してください。