2016-07-25 38 views
3

我想更改時區Django的正常工作,所以我讀的文件怎麼辦呢NAD這裏是我得到了什麼:時區不是在Django

#settings.py 
TIME_ZONE = 'Europe/Ljubljana' 

#models.py #date_time gets filled with "auto_now=True") 
date_time = models.DateTimeField(auto_now=True) 

UTC DST對於給定的位置偏移(歐洲/盧布爾雅那)是+2,而在我的分貝,我看到UTC的時間戳。那麼我錯過了什麼?

或者這是按照預期工作,因此它可以分別處理每個請求(對不同時區的人有用)?但是,如果是這樣的話,那麼設置TIME_ZONE = 'Europe/Ljubljana'有什麼用?

回答

2

documentation

啓用對時區的支持,在數據庫中的UTC的Django店日期時間信息,使用時區感知datetime對象的內部,並將它們轉換爲最終用戶的時區在模板和表單中。

因此您的數據庫中的日期時間將始終以UTC格式存儲,但會在模板和表單中使用正確的TZ顯示。

要在正確的TZ獲取日期的其他地方,使用astimezone()

>>> from myapp.models import Details 
>>> import pytz 
>>> d = Details.objects.get(pk=1) 
>>> d.added 
datetime.datetime(2016, 5, 28, 18, 59, 55, 841193, tzinfo=<UTC>) 
>>> localdate = d.added.astimezone(pytz.timezone('Europe/Ljubljana')) 
>>> localdate 
datetime.datetime(2016, 5, 28, 20, 59, 55, 841193, tzinfo=<DstTzInfo 'Europe/Ljubljana' CEST+2:00:00 DST>) 
+0

嗯,這似乎是我的一個問題,因爲,我想改變這個時間戳到時代 - 需要highcharts。任何解決方法的建議? – narn

+1

通過設置DATABASE設置中的[TIME_ZONE](https://docs.djangoproject.com/en/1.9/ref/settings/#std:setting-DATABASE-TIME_ZONE)選項,您可以強制Django在本地時間存儲日期時間 - 但這會迫使你使用不支持時區的數據庫(SQLite,MySQL,Oracle)。 – rafalmp

+0

這很酷,目前我正在使用MySQL,所以我會研究它! – narn