2009-08-19 19 views
10

Il datetime.strptime() di Python è documentato come supporto di un fuso orario nel campo% Z. Così, per esempio:Quali valori possibili accetta datetime.strptime() per% 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) 

Tuttavia, "UTC" sembra essere l'unico fuso orario che posso ottenere di supportare:

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' 

Quale formato è vero aspettano per% Z? O come rappresento un fuso orario diverso da UTC?

risposta

9

Ho capito che sono GMT, UTC e tutto ciò che è elencato in 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) 

Queste impostazioni sono specifiche della macchina, naturalmente, e la vostra sarà diverso con ogni probabilità.

4

Questo è dal modulo time, ma sono quasi certo si applica a datetime:

supporto per la direttiva% Z si basa sui valori contenuti in tzname e se la luce del giorno è vero. A causa di questo, è specifico della piattaforma eccetto per il riconoscimento di UTC e GMT che sono sempre note (e sono considerate come fusi orari non diurni).

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

Sul mio sistema:

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

Utilizzando tutt'altro che questi in datetime.strptime risultati in un'eccezione. Quindi, guarda per vedere quello che hai a disposizione sulla tua macchina.

Problemi correlati