7

ObjectIDのタイムスタンプをpy-prettyでプリティファイしようとしていますが、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関数でタイムゾーンに依存しないようにすべきではありませんか?

4

1 に答える 1

18

私はかなり専門家ではありませんが、あなたのコードはタイムゾーンを認識している日付をタイムゾーンを認識していない日付に変換しません。

nowUTCタイムゾーン(タイムゾーン対応)の現在の日付(を使用)を取得するだけです。

次を使用して、tz対応の日時をtz対応の日時に単純に変換できます。

your_datetime_var.replace(tzinfo=None)

あなたの場合:

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

この場合の「ナイーブ」とは、日付と時刻に関連するすべてのフィールドが元のフィールドと同じ値になるが、タイムゾーンとDSTに関する情報が失われることを意味することに注意してください。

ところで、py-prettyはメンテナンスされていないようです(2010年のpypiへの最後のアップロード、ソースコードにアクセスできません)ので、代替品を探すことをお勧めします

于 2012-11-19T13:42:58.400 に答える