タイムゾーンとDSTの問題に関する100万の質問に追加するだけです。
日付と時刻のフィールドが別々になっているフォームがあり、それらを組み合わせてDateTimeを作成します。
start_time = DateTime.parse("#{parse_date(form_date)} #{form_start_time} #{Time.zone}")
2012年8月21日と15:00でフォームに入力すると、これらはフォームをリロードしたときに表示される値です。次に、モデルのstart_time属性を見ると、正しく設定されていTue, 21 Aug 2012 15:00:00 EST +10:00
ます。
私が抱えている問題は、夏時間が始まると今年後半に日付を使用すると発生します(私はオーストラリアにいます)。2012年12月21日と15:00を使用する場合は、start_timeを確認してくださいFri, 21 Dec 2012 16:00:00 EST +11:00
。
この問題の私の解釈は、日付が現在のタイムゾーン(+10:00)に保存されているということです。これは、DateTime.parseに指示したことです。ただし、値が返されると、Railsは日付を確認し、「ねえ、12月の夏時間です」と言って、+11:00タイムゾーンで時刻を返します。
私がやりたいのは、DSTが有効になっている場合、+11:00タイムゾーンで時間を節約するようにDateTime.parseに指示することです。明らかにTime.zoneを文字列に渡しても、これは達成されません。これを行う簡単な方法はありますか?Time#dstを使用してそれを行う方法を見ることができますか?しかし、これによって本当に醜い複雑なコードが作成されるのではないかと思います。私が欠けている方法が組み込まれているのではないかと思いました。