MySQL和Django时间问题总结
最近做了一个项目的重构,遇到一些关于Django时区问题和MySQL时间问题,在网上查了一些资料,很多博客都分享了相关信息。但是发现一些博客的相关回答不是那么准确,我重新总结下。
Python时间问题
在Python中关于时间有两种:Naive and aware datetime objects。offset-naive不带时区信息,offset-aware带时区信息。
Python的datetime.datetime对象有一个tzinfo属性,用于存储时区信息。也可以使用tzinfo判断datetime对象是否带有时区信息。
>>> import datetime
>>> now = datetime.datetime.now()
>>> now
datetime.datetime(2020, 6, 19, 16, 37, 12, 257502)
>>> now.tzinfo==None
True
也可以使用django.utils.timezone中的is_aware()和is_naive()来判断。
上面代码中的now就是一个offset-naive,offset-naive和offset-aware也可以相互转换。
>>> import pytz
>>> now=now.replace(tzinfo=pytz.timezone('UTC'))
>>> now
datetime.datetime(2020, 6, 19, 16, 37, 12, 257502, tzinfo=