-
Type: Improvement
-
Resolution: Unresolved
-
Priority: Unknown
-
Affects Version/s: None
-
Component/s: Docs
https://pymongo.readthedocs.io/en/stable/api/bson/index.html#dt2 mentions that datetime.datetime instances are treated as naive, but doesn't explain what that means. It may be helpful to link to https://docs.python.org/3/library/datetime.html#aware-and-naive-objects for context. https://pymongo.readthedocs.io/en/stable/examples/datetimes.html also refers to "aware" in a similar vein.
https://pymongo.readthedocs.io/en/stable/examples/datetimes.html says PyMongo assumes datetimes are naive (i.e. no timezone info) and will interpret the time as UTC. I found that I needed to use datetime.datetime.utcfromtimestamp instead of fromtimestamp when constructing a datetime from a UNIX timestamp; otherwise I ended up storing a local time (by the numbers, e.g. 5:30pm) with a UTC timezone.
I understand PyMongo uses the native datetime type as a convenience, but the edge cases around timezone handling definitely seem like something that can trip up a new user. We would have a similar challenge in PHP if we used the built-in DateTime class instead of having our own UTCDateTime.