我是数据存储区的用户GAE ndb
,并且date
属性定义为
class GuestMessage(ndb.Model):
date = ndb.DateTimeProperty(auto_now_add=True)
现在我可以使用e.date.strftime('%Y-%m-%d %H:%M:%S')
轻松打印并获取2013-06-03 05:46:50
但是如何根据用户的时区设置将其打印为2013-06-03 05:46:50 +0000
或2013-06-03 13:46:50 +0800
?
答案 0 :(得分:4)
datetime对象没有tzinfo对象。所以请试试这个
import pytz
from pytz import timezone
query = GuestMessage.all().get()
current = query.date
user_tz = timezone('Asia/Singapore')
current = current.replace(tzinfo=pytz.utc).astimezone(user_tz)
self.response.write(current.strftime('%Y-%m-%d %H:%M:%S %z')) # 2013-05-22 19:54:14 +0800
self.response.write(current.strftime('%Y-%m-%d %H:%M:%S %Z')) # 2013-05-22 19:54:14 SGT
要从请求标题中找到时区:
county_code = self.request.headers['X-Appengine-Country'] # Return County code like SG, IN etc.
tz = pytz.country_timezones(county_code)
如果您收到ImportError: No module named pytz
,请从此处下载来源:pypi.python.org/pypi/gaepytz。然后将pytz目录移动到app引擎项目的根目录