The pit of python datime-received a naive datetime while time zone support is active
When you use Django to insert some time-type data, you are likely to encounter the above error. Why?
from datetime import datetime
print(datetime.utcnow())
Because the confusing utcnow
does not carry time zone information, and Django will perform time zone verification on data of type datetime
utcnow
with utc time zone information?
To ask another question, you can ask:
If you let the python datetime type bring time zone information, such as utc time zone information
Need to use the following code
datetime.utcnow().replace(tzinfo=timezone.utc)
Let's see the difference in output:
from datetime import datetime, timezone
a = datetime.utcnow()
print(a, type(a))
a = datetime.utcnow().replace(tzinfo=timezone.utc)
print(a, type(a))
The output is:
2021-11-01 05:18:11.165279 <class 'datetime.datetime'>
2021-11-01 05:18:11.165811+00:00 <class 'datetime.datetime'>
See +00:00
the back? This is the time zone information.
This timeinfo information is stored in the datetime class
@property
def tzinfo(self):
"""timezone info object"""
return self._tzinfo
If you are using python to deal with some time zone related content, you can take a look at the following content:
A time helper tool commonly used
mac mysql modify the default time zone to utc
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。