时区在python中不可用,但系统时区已正确设置

时区在python中不可用,但系统时区已正确设置,python,timezone,Python,Timezone,如合同规定: 根据日期,我的系统已正确设置时区: 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@peg

如合同规定:

根据日期,我的系统已正确设置时区:

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()
对象没有附加时区对象。系统时间按原样计算

您需要以以下形式安装Python时区支持:;时区定义更改太频繁,无法与Python本身绑定

pytz
不会告诉您机器配置的时区。你可以用它来做这件事;它具有返回当前使用的时区的。这比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'

谢谢你的解释!我不知道必须显式添加时区对象。
>>> 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'