2013-09-28 55 views
0

正如documentation規定:時區不蟒蛇可用,但該系統時區設置正確

%Z -> Time zone name (no characters if no time zone exists). 

根據日期,我的系統中正確設置時區:

[email protected] ~ » 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() 

產地:

[email protected] ~ » python test_timezone.py 
2013-09-28 09:19:10 

沒有時區信息。這是爲什麼?我如何強制python輸出時區信息?

我也試圖用tzselect重新配置時區,但沒有幫助。

回答

2

標準Python datetime.datetime()對象沒有時區對象附加到它們。系統時間照原樣。

您需要安裝Python時區支持,格式爲pytz package;時區定義更改太頻繁,無法與Python本身捆綁在一起。

pytz不會告訴您您的機器配置了哪個時區。您可以使用​​作爲它;它有一個dateutil.tz.gettz() function,它返回當前正在使用的時區。這比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' 
+0

感謝您的好評!我不知道必須明確添加時區對象。 – dangonfast