Debian で Rails 3.2 と Ruby 1.9.3 を使用しています。HTML フォームを介して文字列の形式で日付、時刻、およびタイムゾーンを収集するアプリがあります。このようなもの:
start_date: "04-15-2010",
start_time: "10:00:00",
timezone: "Central Time (US & Canada)"
私がしたいのは、これらの 3 つの要素を単一の日付に解析し、UTC としてデータベースに保存することです。この場合、UTC タイム ゾーンに入ると、開始時刻に 7 時間が追加されます。したがって、受信した中央時間ではなく、UTC として DB に保存されると、保存された時間は 17:00 になります。
日付を解析するために、次のようなことを試しました。
ActiveSupport::TimeZone[timezone].at DateTime.strptime("{ 2012-04-09 20:00:00 }", "{ %Y-%m-%d %H:%M:%S }").to_i
ただし、%Z を使用して結果の時間にタイム ゾーンを組み込むことはできません。解析しないか、時刻が中部時間ではなく UTC として解釈されます。だから私の質問は、保存されている実際の日付/時刻の値を変更せずに、日付文字列を特定のタイムゾーンに強制する方法です。将来のタイムゾーン変換が正確になるように、文字列をその時点で正しいタイムゾーンを含む日付/時刻オブジェクトに解析できるようにしたいと考えています。私はすべてを見てきましたが、これを行う方法が見つかりません。これは、HTML フォームから入力された日付に対して一般的に行われているように見えるため、奇妙です。助けてくれてありがとう。