2012-06-21 21 views
5

Tengo dificultades para convertir una cadena de tiempo no UTC a UTC debido a la abreviación de zona horaria.Convertir cadena de tiempo no UTC con abreviatura de zona horaria en hora UTC en python, teniendo en cuenta el horario de verano

(actualización.. Parece que la timezone abbreviations may not be unique si es así, tal vez debería también estar tratando de tener esto en cuenta)

que he estado tratando de buscar una forma de evitar esto usando datetutil y pytz, pero no han tenido suerte.

Se agradecerán sugerencias o soluciones.

string = "Jun 20, 4:00PM EDT" 

me gustaría convertir eso en hora UTC, que representan el verano cuando sea apropiado.

ACTUALIZACIÓN: encontrado algunas referencias que pueden ayudar a los usuarios más experimentados contestan el P.

Esencialmente, me imagino que parte de la solución haciendo lo contrario de this.

INFORME FINAL DE ACTUALIZACIÓN (IMPORTANTE)

Tomado del dateutil docs examples.

Algunos ejemplos simples basados ​​en el comando date, utilizando el diccionario TZOFFSET para proporcionar el desplazamiento de la zona horaria BRST.

de análisis sintáctico ("Thu Sep 25 10:36:28 BRST 2003", tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, tzinfo = tzoffset ('BRST', -10800))

de análisis sintáctico ("2003 10:36:28 BRST 25 Sep jue.", tzinfos = TZOFFSETS) datetime.datetime (2003, 9, 25, 10, 36, 28, tzinfo = tzoffset ('BRST', -10800))

Combine esto con una biblioteca such as found here. y tendrá una solución a este problema.

+0

Qué valor debe utilizarse para el año? ¿Corriente? – Bryan

+0

@beargle - sí. Asumiría actual para todos estos productos. – snakesNbronies

+0

Sí, las abreviaturas de zona horaria no son únicas en todo el mundo. ¿Puedes asumir un país? –

Respuesta

5

El uso de abreviaturas de zona horaria UTC Nas Banov's excellent dictionary de mapeo para offset:

import dateutil 
import pytz 

# timezone dictionary built here: https://stackoverflow.com/a/4766400/366335 
# tzd = {...} 

string = 'Jun 20, 4:00PM EDT' 
date = dateutil.parser.parse(string, tzinfos=tzd).astimezone(pytz.utc) 
+0

Estaba a punto de para volver con una actualización sobre las bibliotecas. – snakesNbronies

Cuestiones relacionadas