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 № 1Nie 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