django保存在mysql數(shù)據(jù)庫的時(shí)間段是以utc時(shí)間來保存的,導(dǎo)致會與實(shí)際時(shí)間差8小時(shí)。讀出來的時(shí)間你會發(fā)現(xiàn)有個(gè)tzinfo=<UTC>參數(shù)钉汗。
>>> t=Trouble.objects.all()[0]
>>> t.starttime
datetime.datetime(2016, 12, 5, 1, 5, 48, tzinfo=<UTC>)
這時(shí)就需要轉(zhuǎn)換為中國的時(shí)區(qū)了推盛。需要用到pytz庫,比較簡單
>>> import pytz
>>> t.starttime.astimezone(pytz.timezone('Asia/Shanghai'))
datetime.datetime(2016, 12, 5, 9, 5, 48, tzinfo=<DstTzInfo 'Asia/Shanghai' CST+8:00:00 STD>)
因?yàn)橛貌坏綍r(shí)區(qū)這個(gè)概念荷荤,最好的方法是避免以UTC時(shí)區(qū)保存。這個(gè)以后有時(shí)間研究,應(yīng)該是settings配置的問題袒哥。
參考:
http://agile-boy.iteye.com/blog/719047
http://www.360doc.com/content/15/0512/20/10072361_470016889.shtml