2012-10-19 1 views
7

と私はpy-prettyでのObjectIDのタイムスタンプを飾り立てるしようとしているが、それは私にはTypeErrorを与え続け:MongoのオブジェクトID:「オフセット・ナイーブ比較することはできませんし、オフセット認識を日付時刻が」偶数pytz

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

た後でも、私はタイムスタンプをPytzのタイムゾーンを認識できないUTC日付に変換しようとしています。これは私が試しているコードです

import datetime 
import pytz 
import pretty 
# ... 

song = db.songs.find_one({ 'GUID' :}) 
dateTimeUnaware = song['_id'].generation_time.now(pytz.utc) 
prettyDate = pretty.date(dateTimeUnaware) 

これは私にタイプエラーを与え続けていますか? pytz関数はタイムゾーンに無関心ではないはずですか?

+0

を探すために、良いアイデアかもしれません無関心ではない... pytz.utcにutcのタイムゾーンを与えること。それを削除すると、あなたの問題を解決するはずです 'dateTimeUnaware = song ['_ id']。generation_time.now()' – Pykler

答えて

18

私は非常に熟練したエキスパートではありませんが、コードではタイムゾーン対応の日付をタイムゾーンに対応しない日付に変換しません。

utcタイムゾーン(現在のタイムゾーンを認識)では、現在の日付(nowを使用)が使用されます。

あなたは単純に使用してTZ-気づかないものにTZ-意識日時を変換することができます:

あなたのケースで
your_datetime_var.replace(tzinfo=None) 

を:「単純に」このケースでは、すべてのフィールドことを意味していること

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

注意を日付と時刻に関連する値は元の値と同じ値になりますが、タイムゾーンとDSTに関する情報は失われます。

ところでそれはPY-きれいでメンテナンスされていないあるように見えます(2010年には、PyPIする最後のアップロード、アクセス不能なソースコード)ので、あなたがそれがタイムゾーンを意識日時がある持っているどのような代替

関連する問題