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

5 minutos de lectura

avatar de usuario
calccrypto

como se hace al revés gmtime()¿dónde pones la hora + la fecha y obtienes la cantidad de segundos?

tengo cuerdas 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.

Yo he tratado time.strftime pero no sé cómo usarlo correctamente, o si es el comando correcto para usar.

avatar de usuario
Naren

Utilizar el tiempo módulo:

import time    
epoch_time = int(time.time())

  • @DanJ: es el número de segundos transcurridos desde Epoch (un momento fijo en el tiempo) y es el mismo en cualquier zona horaria. Aunque si ignoramos las instancias de tiempo alrededor de los segundos bisiestos; es fácil convertirlo a UTC si time utiliza la época de Unix (1970).

    – jfs

    17 de noviembre de 2013 a las 17:04

  • Tenga en cuenta que esto no es lo que estaba pidiendo el OP, pero es lo que yo querido. Entonces +1.

    – sin miedo_tonto

    21 de septiembre de 2014 a las 6:50

  • es la respuesta a lo que se pregunta en el título: “obteniendo el tiempo desde la época”. +1

    – Alejandro VD

    3 de noviembre de 2015 a las 17:16

  • @JFSebastian esto da época a segundos. ¿Cómo puedo obtener la resolución hasta milisegundos usando la misma respuesta anterior?

    – Marlon Abeykoon

    22 de agosto de 2016 a las 9:37

  • para ampliar mi comentario anterior: time.time() El valor NO depende de la zona horaria local (si excluimos las zonas horarias “correctas” y similares), por ejemplo, si devuelve la hora POSIX (como lo hace en la mayoría de los sistemas), entonces es la cantidad de segundos SI desde la Época (1970-01 -01UTC) sin contar los segundos bisiestos. Este valor pueden ser convertido a UTC (excluyendo los segundos bisiestos) pero no es UTC. @MarlonAbeykoon: Me gusta esta respuesta

    – jfs

    22 de agosto de 2016 a las 10:36

avatar de usuario
nmichaels

Si llegaste aquí porque un motor de búsqueda te dijo que así es como obtener la marca de tiempo de Unix, deja de leer esta respuesta. Desplácese hacia arriba uno.

Si quieres invertir time.gmtime()usted quiere 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 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 aquí

  • Si está buscando la época actual de Unix, consulte el comentario de @DanJ o la respuesta de naren, ¡esta respuesta es incorrecta!

    – mutantaculo

    22 de marzo de 2013 a las 10:52

  • Respuestas como esta me hacen reír. No estoy exactamente seguro de por qué. Me siento como una pelota de baloncesto.

    –Nathan Chappell

    20 oct 2020 a las 12:25

  • @NathanChappell La optimización del motor de búsqueda es extraña, y “cómo obtener segundos desde la época” es la única parte de la pregunta que mucha gente lee. Vea el comentario anterior que sugiere que esta respuesta es incorrecta, ya que responde a la pregunta que realmente se hizo.

    – nmichaels

    22 oct 2020 a las 15:31

  • Si vino aquí simplemente buscando cómo obtener el tiempo de época en python, la respuesta es -> time.time()

    – MohitC

    26 de diciembre de 2021 a las 13:28

avatar de usuario
unutbu

Tenga en cuenta que time.gmtime marca de tiempo de los mapas 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 ubicación, 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

  • Esto brinda una mejor explicación y un ejemplo de time.mktime (que tiene en cuenta la zona horaria actual), gracias

    – Jkm

    30 de enero de 2016 a las 6:21


  • @Jkm: NO usar mktime() con gmtime(). mktime() acepta tu hora local pero gmtime() devoluciones Hora UTC — su zona horaria local puede y es probable que sea diferente. “marca de tiempo relativa a su configuración regional” no tiene sentido: la marca de tiempo POSIX no depende de su configuración regional (zona horaria local), tiene el mismo valor en todo el mundo. “segundos desde época” es una marca de tiempo POSIX en la mayoría de los casos (incluso en Windows); cosas como las zonas horarias “correctas” que usan la escala de tiempo TAI no son comunes. Consulte ¿Time.time() de Python devuelve la marca de tiempo local o UTC?

    – jfs

    22 de agosto de 2016 a las 10:19

  • @JF Sebastián Tienes razón. En realidad, tengo algunos problemas sobre mktime() recientemente. Para algunos servidores web de Python (Tornado, por ejemplo), dado que el proceso sigue ejecutándose, incluso si cambio la configuración regional del sistema, el mktime() llamado por la API del servidor web aún usa el antigua zona horaria para generar el objeto de tiempo. tengo que cambiar a gmtime() y aplique manualmente la compensación gmt.

    – Jkm

    31 de agosto de 2016 a las 1:41

ep = datetime.datetime(1970,1,1,0,0,0)
x = (datetime.datetime.utcnow()- ep).total_seconds()

Esto debe 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 hora, el módulo de fecha y hora no admite segundos bisiestos.

t = datetime.strptime('Jul 9, 2009 @ 20:02:58 UTC',"%b %d, %Y @ %H:%M:%S %Z")

  • No puedo acceder a strptime por alguna razón. he importado fecha y hora

    – calccrypto

    28 de diciembre de 2010 a las 19:21

  • @calccrypto tienes que hacerlo from datetime import datetime o hacer datetime.datetime.strptime

    – patikrit

    06/09/2013 a las 21:20

avatar de usuario
Evan Mulawski

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

mktime() y timegm()

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

  • No puedo acceder a strptime por alguna razón. he importado fecha y hora

    – calccrypto

    28 de diciembre de 2010 a las 19:21

  • @calccrypto tienes que hacerlo from datetime import datetime o hacer datetime.datetime.strptime

    – patikrita

    06/09/2013 a las 21:20

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad