google app engine——python时区转换

在Google App Engine(GAE)的Python应用中,发现默认获取的时间是UTC时间而非本地时间。解决方法是使用第三方库pytz进行时区转换。通过导入pytz并调用datetime.datetime.now(tz)函数,传入相应的时区对象,可以实现时间的转换。例如,转换为中国时间,可以使用pytz.timezone('Asia/Chongqing')。为了减小包体积,可以将pytz压缩后加入到sys.path。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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)

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值