Tengo una diferencia horaria
time1 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
...
time2 = datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
diff = time2 - time1
Ahora, ¿cómo encuentro el número total de segundos que pasaron? diff.seconds
No cuenta los días. Yo podría hacer:
diff.seconds + diff.days * 24 * 3600
¿Hay un método integrado para esto?
time1
ydiff
en su código. Para obtener el tiempo utc actual como un objeto datetime ingenuo, usedatetime.utcnow()
en su lugar. Para entender por qué debería usar UTC en lugar de la hora local para encontrar la diferencia, vea Buscar si han pasado 24 horas entre fechas y horas: Python .time.monotonic()
podría ser preferible encontrar el tiempo transcurrido entre eventos (en lugar detime.time()
odatetime.utcnow()
).Respuestas:
Uso
timedelta.total_seconds()
.fuente
Tienes un problema de una forma u otra con tu
datetime.datetime.fromtimestamp(time.mktime(time.gmtime()))
expresión.(1) Si todo lo que necesita es la diferencia entre dos instantes en segundos, lo muy simple
time.time()
hace el trabajo.(2) Si está usando esas marcas de tiempo para otros fines, debe considerar lo que está haciendo, porque el resultado tiene un gran olor por todas partes:
gmtime()
devuelve una tupla de tiempo en UTC peromktime()
espera una tupla de tiempo en hora local.Estoy en Melbourne, Australia, donde la TZ estándar es UTC + 10, pero el horario de verano sigue vigente hasta mañana por la mañana, así que es UTC + 11. Cuando ejecuté lo siguiente, era 2011-04-02T20: 31 hora local aquí ... UTC era 2011-04-02T09: 31
Notarás que t3, el resultado de tu expresión es UTC + 1, que parece ser UTC + (mi diferencia local de DST) ... no muy significativo. Debería considerar usar el
datetime.datetime.utcnow()
que no saltará por una hora cuando el horario de verano se active / desactive y puede darle más precisión quetime.time()
fuente
Puede usar el módulo mx.DateTime
fuente