如文档中指定:
%Z -> Time zone name (no characters if no time zone exists).
根据日期,我的系统已正确设置时区:
gonvaled@pegasus ~ » date
Sat Sep 28 09:14:29 CEST 2013
但这个测试:
def test_timezone():
from datetime import datetime
dt = datetime.now()
print dt.strftime('%Y-%m-%d %H:%M:%S%Z')
test_timezone()
生产:
gonvaled@pegasus ~ » python test_timezone.py
2013-09-28 09:19:10
没有时区信息。为什么?如何强制 python 输出时区信息?
我也尝试用tzselect
重新配置时区,但没有帮助。
标准 Python datetime.datetime()
对象没有附加时区对象。系统时间按原样计算。
您需要以pytz
包的形式安装 Python 时区支持;时区定义更改太频繁,无法与 Python 本身捆绑在一起。
pytz
不会告诉您计算机配置了哪个时区。您可以使用python-dateutil
模块;它有一个返回当前正在使用的时区的dateutil.tz.gettz()
函数。这比 Python 从有限的 C API 中获得的要可靠得多:
>>> import datetime
>>> from dateutil.tz import gettz
>>> datetime.datetime.now(gettz())
datetime.datetime(2013, 9, 28, 8, 34, 14, 680998, tzinfo=tzfile('/etc/localtime'))
>>> datetime.datetime.now(gettz()).strftime('%Y-%m-%d %H:%M:%S%Z')
'2013-09-28 08:36:01BST'