【发布时间】:2012-09-27 15:41:32
【问题描述】:
这就是我想要做的:用户提交太平洋时间,提交后我使用 .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() 时,我收到以下错误:
警告 2012-10-06 21:10:14,579 tasklets.py:399] 初始生成器 _put_tasklet(context.py:264) 引发 NotImplementedError(DatetimeProperty 日期只能支持 UTC。请派生一个新属性以支持替代时区。 ) 警告 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”,我仍然会遇到相同的错误。
真的可以在这里使用大量的帮助... 谢谢!
【问题讨论】:
标签: google-app-engine app-engine-ndb