2013-10-07 74 views
2

我使用一個日期時間字段保留當前日期,在該日期時間字段中,我指示默認情況下將當前日期作爲值。日期時間和時區 - OpenERP 7

_defaults = { 
     'f_inicio' : lambda *a: datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 
    } 

假定當前日期是'07 /二千零一十三分之一十17時24分05秒」,在視圖中是日期'07 /二千零一十三分之一十12時24分05' 秒,並在數據庫整流和日期是'07/10/2013 17:24:05';收集這個減去五個小時。用戶可以設置時區'America/Bogota',哥倫比亞在該地區(GTM - 5:00)。但不明白如何正確顯示用戶,因爲我得到了應該顯示的完全不同的值。顯然,這是GTM哥倫比亞的'GTM 0'。以「2013-10-07 22:24:05.384」作爲默認應該給我的字段大致日期create_date字段。

任何人都有任何想法可能發生的事情,真的很感謝在這個問題上的任何幫助,這讓我瘋狂。

回答

5

這讓我太過瘋狂了。這是一個很簡單的問題。

存儲在數據庫中的日期是UTC(GMT-0)時區。假設該人設置的時區爲GMT - 5:00,然後在將值存儲到數據庫時,日期將添加5小時(正好5,不多或少一點),因此我們得到UTC時間存儲到數據庫中。現在,當顯示相同時,它將檢查用戶時區,並發現其GMT時間爲5:00,因此數據庫時間將減去5(同樣恰好爲5,不多或少或少)並顯示用戶。

這對於在不同時區使用的系統非常有用。因此,理解是輸入在UTC(GMT-0)中存儲的用戶時區中顯示並顯示到用戶的時區(即使用戶正在查看不同時區,時間將精確到他們的時區)

注意:如果用戶未設置時區,則會考慮瀏覽器時區,並將與頂部拐角處的警告圖標一起使用。

就是這樣。希望這給你更好的清晰度!