2011-11-21 27 views
5

Tengo una tabla de base de datos con artículos y cada uno de estos artículos tiene una fecha de envío. Necesito calcular los días y horas ya que el artículo han sido publicados en la base de datos, como:Python - ¿Cómo calcular el tiempo transcurrido desde la fecha X?

This article has been published 4 hours ago. 
This article has been published 3 days and 4 hours ago. 

Ya hay algún código que pueda volver a utilizar para hacer esto? He buscado en google, pero tal vez no estoy usando las palabras correctas.

¿Alguna pista que podría ayudarme?

Best Regards,

Respuesta

9

Eche un vistazo a datetime package, tiene todo lo que necesita.

cuando restas una fecha y hora de otra, obtienes un objeto timedelta. Puede usar total_seconds() para obtener la duración en segundos y usar división para convertirlo a horas y días. Entonces, su único trabajo es formatearlo en una cadena legible.

+0

FWIW, str() llamado en un objeto datetime.timedelta crea una cadena con el siguiente formato: '4 días, 23: 58: 57.256000' No creo que haya una forma de cambiar el formato, pero te ahorra trabajo si es un formato aceptable. – Jeremiah

+0

Excelente respuesta, pero tenga en cuenta que el método pertinente de la clase timedelta es total_segundos –

+0

@ShmilTheCat, gracias por notar que hice una corrección. –

4

me gustaría convertir la fecha presentada en un datetime, a continuación, utilizar algo así como https://gist.github.com/207624 para convertir el datetime a una cadena humanizada.

+1

Downvoter: ¿podría explicar por qué cree que esta es una respuesta pobre para poder mejorar mis respuestas futuras? –

+0

Hola. Tiene un error simple en la 9ª línea de su código. Dice: 'dt = otherdate - now' pero realmente debería ser al revés. Tal vez esa fue la razón por la que el que menospreció votó a favor. – Firebowl2000

Cuestiones relacionadas