これが私がやろうとしていることです: ユーザーは太平洋で時間を送信し、送信したら .replace を使用してタイムゾーンを太平洋に設定します。
Pacific = time.USTimeZone(-8, "Pacific", "PST", "PDT")
addEvent.date = addEvent.date.replace(tzinfo=Pacific)
tzinfo を設定したら、put を実行します。google appengine の python ドキュメントによると、次のように書かれています。
「datetime 値に tzinfo 属性がある場合、保存のために UTC タイム ゾーンに変換されます。値はデータストアから UTC として返され、tzinfo は None になります。日付と時刻の値が特定の時間にある必要があるアプリケーションタイム ゾーンは、値を更新するときに tzinfo を正しく設定し、値にアクセスするときに値をタイム ゾーンに変換する必要があります。」
ただし、put() を実行すると、次のエラーが発生します。
WARNING 2012-10-06 21:10:14,579 tasklets.py:399] 初期ジェネレーター _put_tasklet(context.py:264) で NotImplementedError が発生しました (DatetimeProperty の日付は UTC のみをサポートしています。別のタイムゾーンをサポートする新しいプロパティを派生させてください。) WARNING 2012 -10-06 21:10:14,579 tasklets.py:399] 中断されたジェネレーター put(context.py:703) が発生した NotImplementedError (DatetimeProperty 日付は UTC のみをサポートします。別のタイムゾーンをサポートする新しいプロパティを派生させてください。)
私はNDBを使用していることに注意してください
わかりましたので、それを行った後、おそらく NDB は自動的に UTC に変換しないと思いました。そこで、次のコードを使用して UTC に変換しようとしました。
class UTC(tzinfo):
def utcoffset(self, dt):
return timedelta(0)
def tzname(self, dt):
return str("UTC")
def dst(self, dt):
return timedelta(0)
太平洋時間をUTCに変換し、tzinfo名を「UTC」に設定した後でも、同じエラーが発生します。
ここで本当にたくさんの助けを借りることができました...ありがとう!