私はカレンダーを持っていて、ユーザーが1日をクリックすると、javascriptの時間変数をajax経由でRailsコントローラーに渡します。
これはローカルでは正常に機能しますが、サーバーにデプロイすると、クリックした日の日付が1日遅れているようです。
カレンダーを最初にページにロードすると、正しい日が表示され、次を使用しています。day = Time.now.to_date.to_s(:db)
ユーザーがカレンダーの1日をクリックすると、次のjsステートメントが使用されます。
start_date: Math.floor(new Date(date).getTime()/1000)
これはこれに変換されます:
1362549600
そして、それをajaxillyでこのrailsコントローラーメソッドに渡します。
start_date = Time.at(params[:start_date].to_i).to_date.to_s(:db)
logger.info "start_date = #{start_date}"
logger.info "time = #{Time.at(params[:start_date].to_i).to_datetime.to_s(:db)}"
ロガーの出力は次のとおりです。
start_date = 2013-03-05
time = 2013-03-05 22:00:00
config/application.rbでタイムゾーンを設定しています。
config.time_zone = 'Central Time (US & Canada)'
これを修正する方法について何か提案はありますか?jsからrailsに日付を渡すために間違った方法を使用していますか?
編集
ちなみに私のjavascriptスニペットでdate
は、最初はWed Feb 06 2013 00:00:00 GMT-0600 (CST)
私がちょうどチェックしたもう一つのことは、私が物理的に中部標準時に座っている間、PDTにある私のサーバー時間です。
$ date
Tue Mar 19 16:51:52 PDT 2013
また、アプリをローカルで実行すると、ロガーの出力は次のようになります。
start_date = 2013-03-06
time = 2013-03-06 00:00:00
これが昨日と今日の違いです。これを修正するために何を変更すればよいかわかりません。