2014-04-14 56 views
2

我有這行代碼:這個tzinfo變量有什麼問題?

datetime.datetime.fromtimestamp(0, "<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>") 

它不斷給我這個錯誤:

TypeError: tzinfo argument must be None or of a tzinfo subclass, not type 'str' 

什麼是tzinfo,從哪裏去了?

回答

10

錯誤有點不言自明:tzinfo參數需要tzinfo對象而不是字符串。但是,我會建議使用pytzpytz比標準庫對時區的支持要強大得多。您可以使用pip install pytz進行安裝。有關更多信息,請參閱the docs

>>> from datetime import datetime 
>>> import pytz 
>>> d = datetime.fromtimestamp(0) 
>>> pacific = pytz.timezone('US/Pacific') 
>>> pacific 
<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD> 
>>> pacific_date = pacific.localize(d) 
>>> pacific_date 
datetime.datetime(1969, 12, 31, 17, 0, tzinfo=<DstTzInfo 'US/Pacific' PST-1 day, 16:00:00 STD>) 
+0

注:使用'.localize()'可能引入[在結果歧義](HTTP://pytz.sourceforge .NET /#問題與 - 本地時間)。 [將時間戳轉換爲utc日期時間對象,然後將其轉換爲給定的時區](http://stackoverflow.com/a/23051332/4279)以避免它。 – jfs

1

爲了POSIX時間戳轉換爲本地時區例如,'US/Pacific'

from datetime import datetime 
import pytz # $ pip install pytz 

timestamp = 0 # seconds since the Epoch 
local_dt = datetime.fromtimestamp(timestamp, pytz.timezone('US/Pacific'))