4

開発モードでローカルに実行している Rails アプリに日付/時刻フィールドのdate_selectandがあります。time_select私の問題は、入力した日付/時刻がサーバー インスタンスのタイムゾーンと一致しないことです。

例として、私のコンピューターの時計は現在、2013 年 9 月 19 日の午後 5 時 34 分を示しています。 5:34 PM"、これは "2013-09-19 17:34:00 UTC" として解析されています。ただし、Time.now「2013-09-19 17:38:00 -0600」をTime.current返し、「2013-09-19 23:38:58 UTC」を返します。基本的に、フォームは UTC の時間を想定していますが、サーバーの UTC 時間 (6 時間の差) とは一致していません。

フォームの入力が適切なゾーン オフセットに変換されるようにするにはどうすればよいですか?

4

1 に答える 1

4

フォームは時刻が UTC であると想定していません。Railsアプリに設定したもの(デフォルトはUTC)を使用しています。理解できるまで、これで遊んでください。以下は私のマシンからのものです。OS は PST (-700) です。Rails アプリは UTC に設定されています。

> Time.now
 => 2013-09-19 20:16:40 -0700
> Time.zone.now
 => Fri, 20 Sep 2013 03:16:42 UTC +00:00
> Time.parse("September 19, 2013 5:34 PM")
 => 2013-09-19 17:34:00 -0700
> Time.zone.parse("September 19, 2013 5:34 PM")
 => Thu, 19 Sep 2013 17:34:00 UTC +00:00
> Time.use_zone('America/Chicago') {Time.zone.parse("September 19, 2013 5:34 PM")}
 => Thu, 19 Sep 2013 17:34:00 CDT -05:00
于 2013-09-20T03:19:47.573 に答える