Mongo ObjectID:即使使用 pytz 也"can't compare offset-naive and offset-aware datetimes"



我正在尝试用py-pretty给objectids timestamp premtify objectids,但它一直给我一个typeerror:

TypeError: can't compare offset-naive and offset-aware datetimes

即使我尝试将时间戳转换为与PYTZ的时区不知道UTC日期的时区。这是我尝试的代码

import datetime
import pytz
import pretty
# ...
song = db.songs.find_one( { 'GUID' : 0123 } )
dateTimeUnaware = song['_id'].generation_time.now(pytz.utc)
prettyDate = pretty.date( dateTimeUnaware )

为什么这会给我带来类型错误?PYTZ功能不应该使其成为时区不可思议吗?

我不是PY-PY-PERTY专家,但是您的代码不会将timezone-Aware日期转换为时区不知道的日期。

它仅在UTC时区(So TighZone Aware)中占据当前日期(使用now)。

您可以通过使用以下方式将tz-ware datetime天真地转换为tz-unaware。

your_datetime_var.replace(tzinfo=None)

在您的情况下:

song['_id'].generation_time.replace(tzinfo=None)

请注意,在这种情况下,"天真"意味着与日期和时间相关的所有字段都具有与原始值相同的值,但是有关时区和DST的信息将丢失。

顺便说一句,看起来Py-pretty是不太好的(2010年上传到PYPI,源代码无法访问),因此寻找替换

可能是个好主意。

最新更新