2011-10-24 50 views
1

這是我目前的情況:Rails 3.1時區困惑?

我有一個用戶類有一個屬性時區。

當用戶使用start_time(3pm)和end_time(5pm)創建演講時,我想確保在數據庫中start_time和end_time實際上是用戶時區中的下午3點和下午5點。

在我的應用程序控制器我做了以下內容:

def set_timezone 
    if current_user 
    Time.zone = current_user.time_zone or "Eastern Time (US & Canada)" 
    end 
end 

當上述講座保存到數據庫中似乎增加4小時。它是否將其轉換回UTC?奇怪的是,當我在視圖中顯示時間時是正確的(我猜它已經從UTC時間轉換回EST時間)。

我需要它,以便如果用戶選擇4pm,它會在下午4點保存在數據庫中,並且當我在視圖中顯示那段時間時,它是下午4點。我現在做錯了什麼?

編輯:它似乎導軌還將所有時間轉換爲UTC時,將它們存儲在數據庫中。沒關係,直到我做了一個涉及時間的查詢(我將不得不手動將它轉換爲UTC)。

回答

3

MySQL also has a time zone.

值得注意的是(重點煤礦):

當前會話時區設置影響顯示和那些區敏感的時間值的存儲。這包括NOW()或CURTIME()等函數顯示的值,以及TIMESTAMP列中存儲和檢索的值。 將TIMESTAMP列的值從當前時區轉換爲UTC存儲,並從UTC轉換到當前時區以供檢索。

它是否值得做任何事......不知道。我很懷疑。