¿Cómo obtener los segundos desde la época a partir de la salida de fecha y hora de gmtime ()?

¿Cómo haces reversa gmtime() , donde pones la hora y la fecha y obtienes el número de segundos?

Tengo cadenas como 'Jul 9, 2009 @ 20:02:58 UTC' , y quiero recuperar la cantidad de segundos entre la época y el 9 de julio de 2009.

He intentado time.strftime pero no sé cómo usarlo correctamente, o si es el comando correcto de usar.

Quieres calendar.timegm() .

 >>> calendar.timegm(time.gmtime()) 1293581619.0 

Puedes convertir tu cadena en una tupla de tiempo con time.strptime() , que devuelve una tupla de tiempo que puedes pasar a calendar.timegm() :

 >>> import calendar >>> import time >>> calendar.timegm(time.strptime('Jul 9, 2009 @ 20:02:58 UTC', '%b %d, %Y @ %H:%M:%S UTC')) 1247169778 

Más información sobre el módulo de calendario aquí.

Usa el módulo de tiempo :

 epoch_time = int(time.time()) 

Tenga en cuenta que time.gmtime asigna una marca de tiempo de 0 a 1970-1-1 00:00:00 .

 In [61]: import time In [63]: time.gmtime(0) Out[63]: time.struct_time(tm_year=1970, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=3, tm_yday=1, tm_isdst=0) 

time.mktime(time.gmtime(0)) le da una marca de tiempo cambiada por una cantidad que depende de su localidad, que en general no puede ser 0.

 In [64]: time.mktime(time.gmtime(0)) Out[64]: 18000.0 

El inverso de time.gmtime es calendar.timegm :

 In [62]: import calendar In [65]: calendar.timegm(time.gmtime(0)) Out[65]: 0 
 t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z") 
 ep = datetime.datetime(1970,1,1,0,0,0) x = (datetime.datetime.utcnow()- ep).total_seconds() 

Esto debería ser diferente de int(time.time()) , pero es seguro usar algo como x % (60*60*24)

datetime – Tipos básicos de fecha y hora:

A diferencia del módulo de tiempo, el módulo de fecha y hora no admite segundos de salto.

Hay dos formas, dependiendo de su marca de tiempo original:

mktime() y timegm()

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