首先狞山,在使用mysql數(shù)據(jù)庫的時候全闷,并沒有使用數(shù)據(jù)庫的時間格式,而是铣墨,直接在數(shù)據(jù)庫中將時間保存為字符串的室埋。結(jié)果項目上線之后,發(fā)現(xiàn)時間并不是北京時間伊约。項目上線是在ubuntu16.4上姚淆,使用uwsgi和nginx部署的。下邊記錄我解決問題的步驟
1排除數(shù)據(jù)庫的問題
因為并沒有使用數(shù)據(jù)庫中的時間格式屡律,只是在數(shù)據(jù)庫中保存的字符串腌逢,所以肯定不是數(shù)據(jù)庫的問題
2排除ubuntu系統(tǒng)
使用date查看了ubuntu的系統(tǒng)時間,發(fā)現(xiàn)系統(tǒng)時間正常
3排除python
使用python的shell超埋。import datetime包 然后 print(datetime.datetime.now()) 發(fā)現(xiàn)時間也是正常的搏讶。感覺,python中使用的時間模塊應(yīng)該是調(diào)用的系統(tǒng)的時間霍殴。
4只能是django的問題了
使用python manage.py shell進(jìn)入django的shell 執(zhí)行import datetime和print(datetime.datetime())兩條命令之后媒惕。終于發(fā)現(xiàn)時間是不正確的。
找到問題之后就需要來解決問題了
進(jìn)入項目的settings.py文件
找到
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'Asia/Shanghai' #將這一項的內(nèi)容改成你所需要地區(qū)的時區(qū)國內(nèi)使用
USE_I18N = True
USE_L10N = True
USE_TZ = False #這一項設(shè)置為false,設(shè)置為true將默認(rèn)使用美國時間 来庭,這也是之前出錯的地方所在
現(xiàn)在我們檢出項目中的時間妒蔚,就會發(fā)現(xiàn),時間已經(jīng)正常