Tengo 2 valores de tiempo que tienen el tipo datetime.time
. Quiero encontrar su diferencia. Lo más obvio es t1 - t2, pero esto no funciona. Funciona para objetos del tipo datetime.datetime
pero no para datetime.time
. Entonces, ¿cuál es la mejor manera de hacer esto?¿Cuál es la forma más simple de encontrar la diferencia entre 2 veces en python?
Respuesta
En primer lugar, cabe destacar que un datetime.time es un momento del día, independiente de un día determinado, por lo que la diferencia entre dos cualesquiera de fecha y hora .los valores de tiempo van a ser menos de 24 horas.
Un enfoque consiste en convertir ambos valores de datetime.time en valores comparables (como milisegundos) y encontrar la diferencia.
t1, t2 = datetime.time(...), datetime.time(...)
t1_ms = (t1.hour*60*60 + t1.minute*60 + t1.second)*1000 + t1.microsecond
t2_ms = (t2.hour*60*60 + t2.minute*60 + t2.second)*1000 + t2.microsecond
delta_ms = max([t1_ms, t2_ms]) - min([t1_ms, t2_ms])
Es un poco tonto, pero funciona.
Parece que esto no es compatible, ya que no habría una buena manera de manejar los desbordamientos en datetime.time. Sé que esta no es una respuesta directa, pero tal vez alguien con más experiencia en Python que yo pueda llevar esto un poco más allá. Para obtener más información, consulte esto: http://bugs.python.org/issue3250
Puede transformar ambos en timedelta objects y restarlos entre sí, lo que se ocupará de las prórrogas. Por ejemplo:
>>> import datetime as dt
>>> t1 = dt.time(23, 5, 5, 5)
>>> t2 = dt.time(10, 5, 5, 5)
>>> dt1 = dt.timedelta(hours=t1.hour, minutes=t1.minute, seconds=t1.second, microseconds=t1.microsecond)
>>> dt2 = dt.timedelta(hours=t2.hour, minutes=t2.minute, seconds=t2.second, microseconds=t2.microsecond)
>>> print(dt1-dt2)
13:00:00
>>> print(dt2-dt1)
-1 day, 11:00:00
>>> print(abs(dt2-dt1))
13:00:00
negativos objetos timedelta en Python consiguen un campo negativo día, con los otros campos positivos. Se podría comprobar de antemano: comparación funciona tanto en objetos y objetos en tiempo timedelta:
>>> dt2 < dt1
True
>>> t2 < t1
True
chryss: Usted podría hacer seriamente bien con un ejemplo aquí. – Arafangion
también un poco tonto, pero usted podría intentar recoger un día arbitraria e incrustación cada vez en ella, usando datetime.datetime.combine
, luego restando:
>>> import datetime
>>> t1 = datetime.time(2,3,4)
>>> t2 = datetime.time(18,20,59)
>>> dummydate = datetime.date(2000,1,1)
>>> datetime.datetime.combine(dummydate,t2) - datetime.datetime.combine(dummydate,t1)
datetime.timedelta(0, 58675)
Python tiene (http://pytz.sourceforge.net) Módulo pytz que puede ser utilizado para la aritmética de objetos 'de tiempo'. También se ocupa de las compensaciones DST. La página de arriba tiene varios ejemplos que ilustran el uso de pytz.
no tiene sentido hablar de husos horarios sabiendo solo el tiempo sin especificar * fecha * también. Si conoce tanto la fecha como la hora, entonces [se pueden usar varias definiciones para una diferencia] (http://stackoverflow.com/a/25427822/4279) – jfs
Recupere los tiempos en milisegundos y luego realice la resta.
Environment.TickCount parece funcionar bien si necesita algo rápido.
inicio int = Environment.TickCount
... HacerAlgo()
int ElapsedTime = Environment.TickCount - empezar
Jon
- 1. ¿Cuál es la forma más simple de usar SSH Python?
- 2. ¿Cuál es la diferencia entre "2 * 2" y "2 ** 2" en Python?
- 3. La diferencia más pequeña entre 2 ángulos
- 4. ¿Cuál es la diferencia entre bcrypt y hashing varias veces?
- 5. ¿Manera concisa de encontrar la diferencia "clave" entre 2 diccionarios?
- 6. Convertir la diferencia entre 2 veces en milisegundos?
- 7. En Python 2, ¿cuál es la diferencia entre '/' y '//' cuando se usa para la división?
- 8. ¿Cuál es la forma más rápida de encontrar el número de coincidencias entre las matrices?
- 9. ¿Cuál es la diferencia entre listas y tuplas en Python?
- 10. ¿Cuál es la diferencia entre conjuntos y listas en Python?
- 11. ¿Cuál es la diferencia entre Lisp-1 y Lisp-2?
- 12. ¿Cuál es la diferencia entre estas 2 inyecciones Spring IOC?
- 13. ¿Cuál es la diferencia entre estas 2 macros?
- 14. Cuál es la diferencia entre MVC 2 y MVC3
- 15. ¿Cuál es la diferencia entre python activo y python?
- 16. ¿Cuál es la forma más simple de crear un iterable vacío usando rendimiento en Python?
- 17. En Python, ¿cuál es la diferencia entre pasar y devolver
- 18. ¿Cuál es la forma más eficiente de encontrar una de varias subcadenas en Python?
- 19. ¿Cuál es la diferencia entre dict() y {}?
- 20. ¿Cuál es la diferencia entre list y list [:] en python?
- 21. ¿Cuál es la diferencia entre {} y [] en python?
- 22. En Python, ¿cuál es la diferencia entre ".append()" y "+ = []"?
- 23. ¿Cuál es el método más simple de comunicación entre procesos entre 2 procesos C#?
- 24. Diferencia entre Environment.Exit y simple retorno 2 de la principal
- 25. Encontrar la diferencia entre 2 fechas en xslt
- 26. ¿Cuál es la diferencia entre() vs [] vs {}?
- 27. ¿Cuál es la diferencia entre el
- 28. Cuál es la diferencia entre $ (...) y `...`
- 29. ¿Cuál es la diferencia entre el colado y la coerción?
- 30. Cuál es la diferencia entre = y: =
Tenga en cuenta que esta solución no conserva el signo. Además, delta_ms = abs (t1_ms - t2_ms) es un poco más fácil de entender y guarda al menos una resta. –
no funciona si t1_ms es antes de la medianoche y t2_ms es después de la medianoche –
¿No debería ser * 1000000? Desde 1 s = 1000000 μs. – Paggas