django保存在mysql数据库的时间段是以utc时间来保存的,导致会与实际时间差8小时。读出来的时间你会发现有个tzinfo=<UTC>参数。
>>> t=Trouble.objects.all()[0]
>>> t.starttime
datetime.datetime(2016, 12, 5, 1, 5, 48, tzinfo=<UTC>)
这时就需要转换为中国的时区了。需要用到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>)
因为用不到时区这个概念,最好的方法是避免以UTC时区保存。这个以后有时间研究,应该是settings配置的问题。
参考:
http://agile-boy.iteye.com/blog/719047
http://www.360doc.com/content/15/0512/20/10072361_470016889.shtml