通常,我的web應用程序中的日期時間字段由Rails以UTC時間存儲在postgresql數據庫中。當我去,以顯示在網頁上的日期和時間,他們在當地時間顯示,因爲我有類似於下面的代碼的東西:在Rails中轉換爲日期字段的本地時間
before_filter :set_time_zone
def set_time_zone
Time.zone = "Pacific Time (US & Canada)"
end
順利,但現在我需要將一些那些datetime
領域到date
數據庫中的字段(這很重要)。例如,我可能有一個日誌日期的學生開始:
Log.create(at: began_at, student_id: student_id)
began_at
是一個datetime
場。沒關係,我已經正確設置了Time.zone,at
字段是date
,它將存儲在postgresql中,可能是在本地時間的前一天或後一天。當我去顯示那個日期時,它不會被轉換爲當地時間,這是有道理的......如果我沒有存儲時間,Ruby/Rails如何知道它是本地的哪一天?
我需要的是當地的日期被存儲。所以我需要將began_at
轉換爲當地時間,然後將其分配給at
。在Rails的控制器中做這件事的正確方法是什麼?
我使用最新的穩定的Rails(3.2.9現在)