2013-06-28 94 views
0

我在時區+5:30從本地機器進入時間。我的TIME_ZONEsettings.py文件中設置爲UTC。現在,輸入來自django admin的數據的用戶正在將其輸入到他自己的當地時區,該時區可能在世界的任何地方。我正在考慮的是how do I convert this time into UTC before storing it in the DB?我需要將所有數據存儲在數據庫中,僅限於UTC。有任何想法嗎?如何從Django獲取系統的本地時區?

+0

你不能,除非你知道「用戶進入的時區數據」。 – Aya

+0

@Aya Isnt有任何部件或東西?一些JavaScript返回當地時區? –

+0

當然,但您可能還想將顯示的數據更改爲本地用戶的時區。根據[另一個問題](http://stackoverflow.com/questions/9690114/how-do-you-make-django-admin-timezone-aware)目前沒有內置的方式來做到這一點。 – Aya

回答

0

首先,你應該得到用戶的時區或時差。

例通過時間差

首先,在客戶端,你必須得到時間差:

//JavaScript 
d = new Date() 
d.getTimezoneOffset() 
// print 
-240 

其次,時間的不同應轉換爲時間戳併發送至服務器端。在時間戳的服務器上,您可以獲得可以保存到數據庫的時間。

+0

我正在從django管理員輸入數據,在將數據發送到django服務器之前,我有任何控制權嗎? –

+0

是的,在模板中。通常,django的管理員將會顯示時間取決於設置如果設置USE_TZ = True在Django管理員的設置時間應該是UTC但我明白你沒有它我是對嗎 –

+0

沒有我在我的設置中設置了USE_TZ = True文件。所以問題存在。如果用戶現在點擊時間,那麼它應該顯示utc時間正確嗎?如果是這種情況,如果用戶手動輸入時間會發生什麼? –

-1

去你的Django項目settings.py

評論時區設置和使用TIME_ZONE = timezone.now()

from django.utils import timezone 


TIME_ZONE = timezone.now() 

# TIME_ZONE = 'UTC' 
# USE_I18N = True 
# USE_L10N = True 
# USE_TZ = True 
+0

TIME_ZONE必須是一個字符串 – Vikas

相關問題