libreria - ¿Python''s time.time() devuelve la marca de tiempo local o UTC?
time.clock python (6)
Basado en la respuesta de #squiguy, para obtener una marca de tiempo verdadera, escribiría desde flotar.
>>> import time
>>> ts = int(time.time())
>>> print(ts)
1389177318
Al menos ese es el concepto.
¿ time.time()
en el módulo de tiempo de Python devuelve la hora del sistema o la hora en UTC?
Esto es para la forma de texto de una marca de tiempo que puede usarse en sus archivos de texto. (El título de la pregunta era diferente en el pasado, por lo que se cambió la introducción a esta respuesta para aclarar cómo se podría interpretar una vez. [Actualizado el 2016-01-14])
Puede obtener la marca de tiempo como una cadena utilizando .now()
o .utcnow()
de datetime.datetime
:
>>> import datetime
>>> print datetime.datetime.utcnow()
2012-12-15 10:14:51.898000
El now
difiere de su utcnow
como se esperaba; de lo contrario, funcionan de la misma manera:
>>> print datetime.datetime.now()
2012-12-15 11:15:09.205000
Puede representar la marca de tiempo a la cadena explícitamente:
>>> str(datetime.datetime.now())
''2012-12-15 11:15:24.984000''
O puede ser aún más explícito para formatear la marca de tiempo de la forma que desee:
>>> datetime.datetime.now().strftime("%A, %d. %B %Y %I:%M%p")
''Saturday, 15. December 2012 11:19AM''
Si desea el formato ISO, use el método .isoformat()
del objeto:
>>> datetime.datetime.now().isoformat()
''2013-11-18T08:18:31.809000''
Puede utilizarlos en variables para cálculos e impresión sin conversiones.
>>> ts = datetime.datetime.now()
>>> tf = datetime.datetime.now()
>>> te = tf - ts
>>> print ts
2015-04-21 12:02:19.209915
>>> print tf
2015-04-21 12:02:30.449895
>>> print te
0:00:11.239980
Finalmente me conformé con:
>>> import time
>>> time.mktime(time.gmtime())
1509467455.0
La función time.time()
devuelve el número de segundos desde la época, como segundos. Tenga en cuenta que la "época" se define como el inicio del 1 de enero de 1970 en UTC. Así que la época se define en términos de UTC y establece un momento global en el tiempo. No importa dónde se encuentre "segundos pasados de la época" (time.time ()) devuelve el mismo valor en el mismo momento.
Aquí hay una salida de muestra que ejecuté en mi computadora, convirtiéndola también en una cadena.
Python 2.7.3 (default, Apr 24 2012, 00:00:54)
[GCC 4.7.0 20120414 (prerelease)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import time
>>> ts = time.time()
>>> print ts
1355563265.81
>>> import datetime
>>> st = datetime.datetime.fromtimestamp(ts).strftime(''%Y-%m-%d %H:%M:%S'')
>>> print st
2012-12-15 01:21:05
>>>
La variable ts
es el tiempo devuelto en segundos. Luego lo convertí en una cadena usando la biblioteca datetime
, lo que la convierte en una cadena que puede leerse por humanos.
La respuesta podría ser ni una ni otra.
ninguno:
time.time()
devuelve aproximadamente la cantidad de segundos transcurridos desde la Época. El resultado no depende de la zona horaria, por lo que no es UTC ni la hora local. Aquí está la definición POSIX para "Segundos desde la época" .both:
time.time()
no requiere que el reloj de su sistema esté sincronizado, por lo que refleja su valor (aunque no tiene nada que ver con la zona horaria local). Diferentes equipos pueden obtener diferentes resultados al mismo tiempo. Por otro lado, si la hora de su computadora está sincronizada, es fácil obtener la hora UTC de la marca de tiempo (si ignoramos los segundos de salto):from datetime import datetime utc_dt = datetime.utcfromtimestamp(timestamp)
Para saber cómo obtener las marcas de tiempo de la hora UTC en varias versiones de Python, consulte ¿Cómo puedo convertir una fecha en segundos desde la época según UTC?
No hay tal cosa como una "época" en una zona horaria específica. La época está bien definida como un momento específico en el tiempo, por lo que si cambia la zona horaria, el tiempo en sí también cambia. Específicamente, esta vez es el Jan 1 1970 00:00:00 UTC
. Entonces time.time()
devuelve el número de segundos desde la época.