2009-08-19 21 views
10

Se documenta que datetime.strptime() de Python admite una zona horaria en el campo% Z. Así, por ejemplo:¿Qué valores posibles admite datetime.strptime() para% 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) 

Sin embargo, "UTC" parece ser la única zona horaria puedo conseguirlo para apoyar:

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' 

¿En qué formato se esperan para% Z? O bien, ¿cómo represento una zona horaria distinta de UTC?

Respuesta

9

Supongo que son GMT, UTC y todo lo que figura en 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) 

Estas configuraciones son específicas de la máquina, por supuesto, y la suya será diferente con toda probabilidad.

4

Este es el módulo de time, pero estoy casi seguro que se aplica a datetime:

El apoyo a la directiva% Z se basa en los valores contenidos en tzname y si la luz del día es cierto. Debido a esto, es específico de la plataforma excepto para reconocer UTC y GMT que son siempre conocidos (y se consideran zonas horarias que no son de horario de verano).

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

En mi sistema:

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

uso de cualquier cosa, pero estos en datetime.strptime resultados en una excepción. Por lo tanto, mira para ver lo que tienes disponible en tu máquina.

Cuestiones relacionadas