django datetime 时区转换

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容