0

時刻と日付を含むハッシュが与えられた場合、ハッシュが他のタイム ゾーンである場合、UTC の時刻オブジェクトを作成するにはどうすればよいですか?

たとえば、私のユーザーは EST であり、「15:04 8/25/2012」を (ビューの select_datetime を介して) 指定しているため、時刻は暗黙的に EST です。

フォームを送信すると、time_hash = {"日"=>"25", "月"=>"8", "年"=>"2012", "時"=>"15", "分"=> "04"}

私が設定した場合

the_time = Time.local params[:date][:year], params[:date][:month], params[:date][:day], params[:date][:hour], params[:date][:minute]

2012 年 8 月 25 日 15:04 である時間オブジェクトを作成します -- ただし、ユーザーの現地時間 (東部) ではなく、サーバーの現地時間 (太平洋) です。

注: 同じ方法で以前に Time.zone を東部に設定しているので、Time.local はハッシュを東部時間として解釈すると思っていましたが、そうではありません。Time.zone.local も試しましたが、エラーがスローされます。

4

2 に答える 2

2
Time.zone.local

正常に動作するはずです。それは少しピッカーでTime.localあり、引数として整数のみを受け入れますが、Time.local文字列は気にしません。そこにいくつかの呼び出しを振りかけれto_iば、大丈夫です。

于 2012-08-25T22:22:04.513 に答える
0

Time.zone.parse を使用すると、ハッシュを「YYYY-MM-DD HH:MM:00」形式に手動で変換することも意味します。

the_time = Time.zone.parse("#{params[:date][:year]}-#{params[:date][:month]}-#{params[:date][:day]} #{params[:date][:hour]}:#{params[:date][:minute]}:00")
于 2012-08-25T22:07:54.493 に答える