1. ホーム
  2. python

[解決済み] オフセット無視のデータタイムとオフセット考慮のデータタイムを引き算できない

2022-02-17 15:52:48

質問

タイムゾーンを意識している timestamptz フィールドがあります。テーブルからデータを取得する際、現在の時刻を差し引くことで、年齢を取得することができます。

問題なのは、両方の datetime.datetime.now()datetime.datetime.utcnow() はタイムゾーンを意識しないタイムスタンプを返すようで、その結果、このエラーが発生します。

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

これを回避する方法はありますか(できればサードパーティモジュールを使用しない)。

EDIT: 提案をありがとうございます。しかし、タイムゾーンを調整しようとすると、エラーが発生するようです。

NOW() AT TIME ZONE 'UTC'

そうすれば、私のタイムスタンプはすべてデフォルトでUTCになります(そうする方が迷惑なのですが)。

解決方法は?

タイムゾーンの認識を削除してみましたか?

から http://pytz.sourceforge.net/

naive = dt.replace(tzinfo=None)

は、タイムゾーンの変換も追加する必要があるかもしれません。

edit: この回答は古いのでご注意ください。Python 3でタイムゾーン情報を削除するのではなく、追加することを含む回答は以下のとおりです。 https://stackoverflow.com/a/25662061/93380