[pyar] Restar horas

1,595 views
Skip to first unread message

Rodolfo Fernández

unread,
Jan 12, 2012, 2:02:27 PM1/12/12
to Python Argentina
Hola a todos !

Necesito restar dos horas en formato HH:MM:SS
(espero se entienda mi problema)

Cada hora se encuentra guardada en una variable, "hora_inicio" y "hora_fin" que fueron obtenidas de una consulta a la base de datos (consulta exitosa, me refiero a imprimir las variables en pantalla, y funciona)

Favor de recomendar alguna forma de hacer el cálculo anteriormente descrito.

PD: El formato obtenido desde la base de datos (MySQL) es: %H:%i:%s por medio de "DATE_FORMAT()"

Saludos...
Rodolfo

Emiliano Dalla Verde Marcozzi

unread,
Jan 12, 2012, 2:27:53 PM1/12/12
to Python Argentina
_______________________________________________

Buenas,
Dado un datetime, podes restar dos horas de la siguiente forma:

 In [1]: import datetime

In [2]: d1 = datetime.datetime.now()

In [3]: d2 = datetime.timedelta(hours=2)

In [4]: result = d1 - d2

In [5]: result.strftime('%H:%M:%S')
Out[5]: '14:25:46'

Saludos o/

--
日本語勉強する
https://bitbucket.org/edvm


Rodolfo Fernández

unread,
Jan 12, 2012, 2:34:15 PM1/12/12
to Python Argentina
Gracias Emiliano,

y por casualidad, como puedo hacer para restar horas especificas ??

Ej:
hora_in = '00:14:45'
hora_fi  = '00:57:14'


Saludos,
Rodolfo


_______________________________________________
pyar mailing list py...@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar

Facundo Batista

unread,
Jan 12, 2012, 2:41:05 PM1/12/12
to Python Argentina
2012/1/12 Rodolfo Fernández <rfernand...@gmail.com>:

> Gracias Emiliano,
>
> y por casualidad, como puedo hacer para restar horas especificas ??
>
> Ej:
> hora_in = '00:14:45'

>>> datetime.datetime.strptime('00:14:45', "%H:%M:%S")
datetime.datetime(1900, 1, 1, 0, 14, 45)

---
.    Facundo

Blog: http://www.taniquetil.com.ar/plog/
PyAr: http://www.python.org/ar/

Rodolfo Fernández

unread,
Jan 12, 2012, 2:47:23 PM1/12/12
to Python Argentina
Excelente !!!!

Muchas gracias, complementando ambas respuesta funciona OK


Rodolfo

Roberto Alsina

unread,
Jan 12, 2012, 2:56:12 PM1/12/12
to py...@python.org.ar
On 1/12/2012 4:47 PM, Rodolfo Fernández wrote:
> Excelente !!!!
>
> Muchas gracias, complementando ambas respuesta funciona OK
Fijate una cosa: en general, no se pueden "restar horas" o "sumar horas"
porque 22:15 + 03:00 no es solo 01:15 sino "las 01:15 del dia siguiente"
O, de otra manera: 12:00 + 12:00 != 12:00 - 12:00

A menos que para tu uso sí sea así...

Rodolfo Fernández

unread,
Jan 12, 2012, 3:05:26 PM1/12/12
to Python Argentina
Afortunadamente para mis fines me sirve, ya que se trata de calcular el tiempo que tarda un usuario en responder preguntas, donde la sesión de preguntas no dura más de 30 minutos, y son realizadas a un horario determinado del día.

Gracias por tu observación

Matigro

unread,
Jan 12, 2012, 3:18:22 PM1/12/12
to Python Argentina
El 12 de enero de 2012 17:05, Rodolfo Fernández <rfernand...@gmail.com> escribió:
Afortunadamente para mis fines me sirve, ya que se trata de calcular el tiempo que tarda un usuario en responder preguntas, donde la sesión de preguntas no dura más de 30 minutos, y son realizadas a un horario determinado del día.

Gracias por tu observación

Existe un módulo para manejar fechas/horas que tiene algunas funcionalidades que te pueden servir http://www.egenix.com/products/python/mxBase/mxDateTime/

Quizás es matar una mosca con la escopeta :D

Salute

--
http://www.linkedin.com/in/matiasgieco

Rodolfo Fernández

unread,
Jan 12, 2012, 3:28:57 PM1/12/12
to Python Argentina
Gracias  Matigro, lo tendré en cuenta !

Saludos,
Rodolfo.


Lucio Torre

unread,
Jan 12, 2012, 5:02:31 PM1/12/12
to Python Argentina
2012/1/12 Rodolfo Fernández <rfernand...@gmail.com>:

> Hola a todos !
>
> Necesito restar dos horas en formato HH:MM:SS
> PD: El formato obtenido desde la base de datos (MySQL) es: %H:%i:%s por
> medio de "DATE_FORMAT()"

y no te conviene obtener los datos de la db sin usar date_format() y
sacar directamente el dato?

De paso, basarte en que la sesion dura menos de media hora y puede
empezar a las 23:45 para asumir correctidud atrae mas problema que
directamente guardar la hora y fecha en ambos casos.

Lucio.

Rodolfo Fernández

unread,
Jan 13, 2012, 6:22:14 AM1/13/12
to Python Argentina
La verdad es que no me conviene obtener los datos de forma directa (sin data_format() ) ya que se trata de un campo tipo "time" (fecha y hora). Y sólo necesito la hora.

La sesión no puede empezar a las 23:45, como dije; los experimentos con usuarios se realizarán en un horario determinado, que en este caso es el de oficina (08.30 a 18.00)

Saludos y gracias por comentar.
Rodolfo.

Rodolfo Fernández

unread,
Jan 13, 2012, 6:32:05 AM1/13/12
to Python Argentina
Emmmmm digo:

Era "date_format()" en lugar de "data_format()"
y "datetime" en lugar de "time" en el primer párrafo.

Lucio Torre

unread,
Jan 13, 2012, 8:00:26 AM1/13/12
to Python Argentina
2012/1/13 Rodolfo Fernández <rfernand...@gmail.com>:

> La verdad es que no me conviene obtener los datos de forma directa (sin
> data_format() ) ya que se trata de un campo tipo "time" (fecha y hora). Y
> sólo necesito la hora.

Fijate que las soluciones que te proponen son:
db -> formateo -> parseo -> datetime
y que si pedis la data sin formatear tenes:
db -> datetime

Saludos.

Reply all
Reply to author
Forward
0 new messages