/ / Mongo ObjectID: „nie można porównywać danych naiwnych z przesunięciem i świadomych przesunięć” nawet z pytzem - python, mongodb, datetime, strefa czasowa, pymongo

Identyfikator obiektu Mongo: "nie można porównać opóźnionych z offsetem i offsetowymi datami" nawet z pytz - python, mongodb, datetime, timezone, pymongo

Próbuję udoskonalić sygnaturę czasową ObjectIDs za pomocą py-pretty ale wciąż daje mi błąd typu:

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

nawet po próbie konwersji znacznika czasu na strefę czasową nieświadomą daty UTC w Pytz. To jest kod, którego próbuję

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 )

Dlaczego nadal wyświetla mi się błąd typu? Czy funkcja „pytz” nie powinna sprawiać, że strefa czasowa jest agnostyczna?

Odpowiedzi:

18 dla odpowiedzi № 1

Nie jestem ekspertem od pyłu, ale twój kod nie konwertuje daty rozpoznającej strefę czasową do nieświadomej daty strefy czasowej.

Zajmuje tylko aktualną datę (za pomocą now.

Możesz naiwnie przekonwertować datetime tz na tz-unaware, używając:

your_datetime_var.replace(tzinfo=None)

w Twoim przypadku:

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

Zauważ, że w tym przypadku „naiwnie” oznacza, że ​​wszystkie pola związane z datą i godziną będą miały taką samą wartość jak oryginalne, ale informacje o strefie czasowej i DST zostaną utracone.

BTW wygląda na to, że py-pretty nie jest utrzymywany (ostatnie przesłanie do pypi w 2010 r., Kod źródłowy jest niedostępny), więc dobrym pomysłem jest poszukiwanie zamiennika