django datetime 时区转换

django保存在mysql数据库的时间段是以utc时间来保存的,导致会与实际时间差8小时。读出来的时间你会发现有个tzinfo=参数。

>>> t=Trouble.objects.all()[0]
>>> t.starttime
datetime.datetime(2016, 12, 5, 1, 5, 48, tzinfo=)

这时就需要转换为中国的时区了。需要用到pytz库,比较简单

>>> import pytz
>>> t.starttime.astimezone(pytz.timezone('Asia/Shanghai'))
datetime.datetime(2016, 12, 5, 9, 5, 48, tzinfo=)

因为用不到时区这个概念,最好的方法是避免以UTC时区保存。这个以后有时间研究,应该是settings配置的问题。
参考:
http://agile-boy.iteye.com/blog/719047
http://www.360doc.com/content/15/0512/20/10072361_470016889.shtml

你可能感兴趣的:(django datetime 时区转换)