Pregunta

¿Cómo convierto un objeto datetime o date en una marca de tiempo POSIX en python? Existen métodos para crear un objeto de fecha y hora a partir de una marca de tiempo, pero parece que no encuentro formas obvias de hacer la operación de la manera opuesta.

¿Fue útil?

Solución

import time, datetime

d = datetime.datetime.now()
print time.mktime(d.timetuple())

Otros consejos

Para cálculos de UTC, calendar.timegm es el inverso de time.gmtime .

import calendar, datetime
d = datetime.datetime.utcnow()
print calendar.timegm(d.timetuple())

Tenga en cuenta que Python ahora (3.5.2) incluye un construido En el método para esto en los objetos datetime :

>>> import datetime
>>> now = datetime.datetime.now() 
>>> now.timestamp() # Local time
1509315202.161655
>>> now.replace(tzinfo=datetime.timezone.utc).timestamp() # UTC
1509329602.161655

En Python, time.time () puede devolver segundos como un número de punto flotante que incluye un componente decimal con los microsegundos. Para volver a convertir una fecha y hora en esta representación, debe agregar el componente de microsegundos porque el intervalo de tiempo directo no lo incluye.

import time, datetime

posix_now = time.time()

d = datetime.datetime.fromtimestamp(posix_now)
no_microseconds_time = time.mktime(d.timetuple())
has_microseconds_time = time.mktime(d.timetuple()) + d.microsecond * 0.000001

print posix_now
print no_microseconds_time
print has_microseconds_time
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top