我正在尝试用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,源代码无法访问),因此寻找替换