0

文档中所述:

%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,但没有帮助。

4

1 回答 1

2

标准 Pythondatetime.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'
于 2013-09-28T07:26:44.240 回答