Mongo ObjectID: “can't compare offset-naive and offset-aware datetimes” even with pytz
我试图用py-pretty来美化ObjectIDs时间戳,但它一直给我一个TypeError:
1 | TypeError: can't compare offset-naive and offset-aware datetimes |
甚至在我尝试使用Pytz将时间戳转换为不知道UTC日期的时区之后。 这是我正在尝试的代码
1 2 3 4 5 6 7 8 | 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-pretty专家,但你的代码不会将时区感知日期转换为时区未知日期。
它只需要在utc时区中使用当前日期(使用
您可以通过使用以下方式将tz感知日期时间天真地转换为tz-unaware one日期时间:
1 | your_datetime_var.replace(tzinfo=None) |
在你的情况下:
1 | song['_id'].generation_time.replace(tzinfo=None) |
请注意,在这种情况下,"天真地"意味着与日期和时间相关的所有字段将具有与原始字段相同的值,但有关时区和DST的信息将丢失。
顺便说一下,看起来py-pretty是不受维护的(2010年最后上传到pypi,源代码无法访问)所以寻找替代品可能是个好主意