我一直在抨擊我的頭靠在Rails中時區的一段時間。這裏是問題:Rails的時區問題
我希望用戶能夠輸入到time_select
場本地時間(例如9:30 AM)。根據用戶選擇的時區,這應該存儲在數據庫中作爲UTC(例如上午9:30 EST保存爲14:30)
然後,它只是使用Time.zone
正確顯示它的問題。
然而,似乎time_select
創建多參數分配值的散列是假定用戶輸入的時間爲UTC。無論我嘗試什麼,我都無法強迫它進入用戶的當地時間。例如:
ruby-1.9.2-p290 :016 > Time.use_zone("Eastern Time (US & Canada)") do
ruby-1.9.2-p290 :017 > a.attributes = {"starttime(1i)"=>"2000", "starttime(2i)"=>"1", "starttime(3i)"=>"1", "starttime(4i)"=>"09", "starttime(5i)"=>"30"}
ruby-1.9.2-p290 :018?> end
=> {"starttime(1i)"=>"2000", "starttime(2i)"=>"1", "starttime(3i)"=>"1", "starttime(4i)"=>"09", "starttime(5i)"=>"30"}
ruby-1.9.2-p290 :019 > a.starttime
=> 2000-01-01 09:30:00 UTC
我見過建議使用config.time_zone
,但我想這爲跨多個時區用戶的工作,所以站點範圍配置設置似乎並不像正確的解決方案。
我如何保存在數據庫中的UTC用戶提供的價值?
謝謝!