google app engine——python时区转换

    技术2022-05-12  10

    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)

     

     

     

     


    最新回复(0)