GAE玩了有一段时间了,现在突然发现在GAE的python应用中,获取的时间是UTC时间,但我清楚记得,之前获取的时间是本地时间啊!!
一个应用应该有一个时间参考点的,大多数应用应该是以本地时间为参考点。
python2.5中:
>>> import datetime>>> datetime.datetime.now()datetime.datetime(2009, 5, 26, 20, 18, 2, 593000)>>> datetime.datetime.now(8)Traceback (most recent call last): File "<interactive input>", line 1, in <module>TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'int'
可以看出,传入的参数tz要为datetime.tzinfo的子类或者None。但是datetime.tzinfo是个抽象类,不能实例化。
用python第三方包轻易搞定:
>>> import pytz>>> import datetime>>> datetime.datetime.now()datetime.datetime(2009, 5, 26, 20, 23, 12, 109000)>>> datetime.datetime.now(pytz.utc)datetime.datetime(2009, 5, 26, 12, 23, 23, 500000, tzinfo=<UTC>)>>> datetime.datetime.now(pytz.timezone(pytz.country_timezones('cn')[2]))datetime.datetime(2009, 5, 26, 20, 24, 9, 296000, tzinfo=<DstTzInfo 'Asia/Chongqing' CST+8:00:00 STD>)>>> pytz.country_timezones('cn')['Asia/Shanghai', 'Asia/Harbin', 'Asia/Chongqing', 'Asia/Urumqi', 'Asia/Kashgar']>>>
主要是datetime.datetime.now(tz)的tz参数构造。
为了减小第三方包的体积,可先压缩后加入sys.path中就ok了。
如:
pytzpy2.5-2006.zip中包含pytz文件夹
pytz_path = r'd:/applit/python/pytzpy2.5-2006.zip'
import sys
sys.insert(0, pytz_path)
