Saltar al contenido

fecha y hora a la marca de tiempo de Unix con precisión de milisegundos

Si encuentras algún problema con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Los objetos de fecha y hora tienen un campo llamado microsecond. Entonces, una forma de lograr lo que necesita es:

time.mktime(then.timetuple())*1e3 + then.microsecond/1e3

Esto devuelve milisegundos desde la época de UNIX con la precisión requerida.

En Python 3.3 y superior, que admiten la datetime.timestamp() método, puede hacer esto:

from datetime import datetime, timezone, timedelta

(datetime.now(timezone.utc) + timedelta(days=3)).timestamp() * 1e3

El día es siempre 86400 segundos en tiempo POSIX. Para obtener la marca de tiempo POSIX 3 días en el futuro como un flotante (con una fracción de segundo):

import time

DAY = 86400 # seconds
future = time.time() + 3 * DAY

Asume que time.gmtime(0) es 1970 (POSIX Epoch).

Si ya tiene un objeto de fecha y hora ingenuo que representa la hora en la zona horaria local, la marca de tiempo puede ser ambigua durante las transiciones de DST. Para evitar la ambigüedad, puede utilizar un objeto de fecha y hora que tenga en cuenta la zona horaria o un objeto de fecha y hora ingenuo que represente la hora en UTC.

Para convertir una fecha y hora local dt a segundos desde la Época:

from datetime import datetime
from time import mktime

timestamp = dt.timestamp() # Python 3.3+
timestamp = mktime(dt.timetuple()) + dt.microsecond / 1e6 # Python 2.7

Puede fallar si la zona horaria local tuvo un desplazamiento utc diferente en el pasado y el time la implementación no tiene acceso a la base de datos de la zona horaria en el sistema. Usar pytz para manejar tales casos.

Para convertir la fecha y hora UTC utc_dt a la marca de tiempo POSIX:

timestamp = (utc_dt - datetime(1970, 1, 1)).total_seconds()

Para obtener milisegundos, simplemente multiplique el número de segundos flotantes por 1e3.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *