2009-08-19 25 views
10

Python的datetime.strptime()被記錄爲在%Z字段支撐時區。因此,舉例來說:不datetime.strptime()接受%Z什麼可能的值?

In [1]: datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z") 
Out[1]: datetime.datetime(2009, 8, 19, 14, 20, 36) 

然而,「UTC」似乎是唯一的時區,我可以得到它的支持:

In [2]: datetime.strptime('2009-08-19 14:20:36 EDT', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 EDT' does not match format '%Y-%m-%d %H:%M:%S %Z' 

In [3]: datetime.strptime('2009-08-19 14:20:36 America/Phoenix', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 America/Phoenix' does not match format '%Y-%m-%d %H:%M:%S %Z' 

In [4]: datetime.strptime('2009-08-19 14:20:36 -0700', "%Y-%m-%d %H:%M:%S %Z") 
ValueError: time data '2009-08-19 14:20:36 -0700' does not match format '%Y-%m-%d %H:%M:%S %Z' 

是期待它什麼格式%Z?或者,我如何表示UTC以外的時區?

回答

9

我推測他們是GMT,UTC,並且無論是在time.tzname上市。

>>> for t in time.tzname: 
...  print t 
... 
Eastern Standard Time 
Eastern Daylight Time 
>>> datetime.strptime('2009-08-19 14:20:36 Eastern Standard Time', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 
>>> datetime.strptime('2009-08-19 14:20:36 UTC', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 
>>> datetime.strptime('2009-08-19 14:20:36 GMT', "%Y-%m-%d %H:%M:%S %Z") 
datetime.datetime(2009, 8, 19, 14, 20, 36) 

這些設置是機器特有的,當然,和你的將是在所有的可能性不同。

4

這是從time模塊,但我幾乎可以肯定它適用於datetime

的%Z指令

支持基於 包含在TZNAME的價值觀和 日光是否爲真。因爲 如此,它是特定於平臺的除了 用於識別UTC和GMT其 總是已知的(並且被認爲是 非夏令時區)。

https://docs.python.org/library/time.html

在我的系統:

>>> import time 
>>> time.tzname 
('PST', 'PDT') 

使用任何東西,但這些在異常datetime.strptime結果。所以,看看,看看你有什麼可你的機器上。

相關問題