create - strftime python example
¿Cómo obtener los segundos desde epoch desde la salida de fecha/hora de gmtime()? (6)
Hay dos formas, dependiendo de su sello de tiempo original:
mktime()
y timegm()
¿Cómo se hace para invertir gmtime()
, donde se pone la fecha y hora y se obtiene el número de segundos?
Tengo cadenas como ''Jul 9, 2009 @ 20:02:58 UTC''
, y quiero recuperar el número 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 para usar.
Quieres calendar.timegm()
.
>>> calendar.timegm(time.gmtime())
1293581619.0
Puede convertir su cadena en una tupla de tiempo con time.strptime()
, que devuelve una tupla de tiempo que puede 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 here
Tenga en cuenta que time.gmtime
maps timestamp 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 desplazada por una cantidad que depende de su configuración regional, que en general puede no 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
Usa el módulo de time :
epoch_time = int(time.time())
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 intercalares.
t = datetime.strptime(''Jul 9, 2009 @ 20:02:58 UTC'',"%b %d, %Y @ %H:%M:%S %Z")