4

私はndbデータストアのユーザー GAE で、次の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それに従って印刷するにはどうすればよいですか?

4

1 に答える 1

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 ディレクトリをアプリ エンジン プロジェクトのルートに移動します。

于 2013-06-03T07:57:37.627 に答える