2016-10-25 151 views
0

Django 1.9/Postgres 9.4 - 我有一個叫做date_ending的模型日期時間字段。當我用my_item.date_ending得到日期時間時,它給了我的日期和時間,與我直接訪問數據庫時看到的不同。我設置settings.py:如何獲取沒有Django修改時間的日期時間?

TIME_ZONE = 'UTC' 
USE_I18N = False 
USE_L10N = False 
USE_TZ = False 

這應該讓django擺脫時區變化的東西,是否正確?基本上我想Django根本不接觸時區。此外,這可能是完全不同的東西...

當我用日期時間字段和日期字段保存模型。日期與日期不同。

datetime_ = datetime.datetime.utcnow() 
datetime_date_ = datetime_.date() 

MyModel.objects.create(
    datetimefield=datetime_, 
    datefield=datetime_date_, 
).save() 

我的數據庫:

 datetimefield    |  datefield 
-------------------------------+----------------- 
    2016-11-04 18:23:18.407671-07 |  2016-11-05 

????

請任何幫助。謝謝

回答

0

在我看來,你的postgres數據庫被配置爲UTC-07的時區,所以它在那個時區存儲日期時間,並且當它「減去」7小時來存儲日期時間到那個時區時,它最終會回到一天。如果將日期時間更改爲UTC(+00)日期時間,那將是2016-11-05 01:23:18.407671+00或類似的東西,並且它將與日期字段相對應。

如果我沒有弄錯,當你使用django的ORM檢索這個datetimefield,而不是直接在postgre的控制檯上時,它應該轉換回UTC,因爲這是Django配置使用的。

+0

非常感謝。 PostgreSQL 9.4被設置爲我在AZ/US的專用服務器時間。我去了我的數據庫並輸入...'show timezone;'...看到它是AZ/US,然後通過設置它改變爲UTC ...'set timezone ='UTC';' –

+0

@quaerereveritatem: ) – dietbacon