2009-08-19 13 views
10

Python's datetime.strptime() jest udokumentowany jako obsługujący strefę czasową w polu% Z. Tak więc, na przykład:Jakie możliwe wartości przyjmuje datetime.strptime() dla% 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) 

Jednak "UTC" wydaje się być tylko czasowa mogę go wspierać:

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' 

jakim formacie jest to oczekując na% Z? Lub, w jaki sposób mogę przedstawić strefę czasową inną niż UTC?

Odpowiedz

9

Domyślam się, że są to GMT, UTC i cokolwiek jest wymienione w 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) 

Ustawienia te są specyficzne dla maszyny, oczywiście, i twoje będzie inna według wszelkiego prawdopodobieństwa.

4

To z modułu time, ale jestem prawie pewien, że to dotyczy datetime:

Wsparcie dla dyrektywy% Z opiera na wartościach zawartych w tzname i czy światło jest prawdą. Z tego powodu jest to specyficzne dla platformy, z wyjątkiem dla rozpoznawania UTC i GMT, które są zawsze znane (i są uważane za stref czasowych niezwiązanych ze światłem dziennym).

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

W moim systemie:

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

Korzystanie z niczego, ale te w datetime.strptime powoduje wyjątek. Zobacz więc, co masz na swoim komputerze.

Powiązane problemy