如何根据用户的时区设置打印日期时间



我是用户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 +00002013-06-03 13:46:50 +0800根据用户的时区设置?

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目录移动到应用引擎项目的根目录

相关内容

  • 没有找到相关文章

最新更新