Foros del Web » Programando para Internet » Python »

[SOLUCIONADO] Sumar y restar Horas

Estas en el tema de Sumar y restar Horas en el foro de Python en Foros del Web. Después de mucho tiempo buscando como poder restar horas con un formato dado, lo encontré y me funciona, pero mi sorpresa llega cuando veo que ...
  #1 (permalink)  
Antiguo 05/06/2016, 13:55
Avatar de PUAROT  
Fecha de Ingreso: octubre-2004
Ubicación: Sevilla
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 1
Sumar y restar Horas

Después de mucho tiempo buscando como poder restar horas con un formato dado, lo encontré y me funciona, pero mi sorpresa llega cuando veo que para la suma no funciona

Pongo el código de la resta para que lo veáis, y así si alguien busca Restar Horas le ayude:

Código:
def restar_hora(self,hora1,hora2):
 * * * *formato = "%H:%M:%S"
 * * * *h1 = datetime.strptime(hora1, formato)
 * * * *h2 = datetime.strptime(hora2, formato)
 * * * *resultado = h1 - h2
 * * * *return str(resultado)
Este código, al escribir:
Código:
restar_hora("10:30:50","09:20:30")
devuelve :
Código:
'1:10:20'
Lo que no entiendo es por que este otro código no funciona :
Código:
def sumar_hora(self,hora1,hora2):
 * * * *formato = "%H:%M:%S"
 * * * *h1 = datetime.strptime(hora1, formato)
 * * * *h2 = datetime.strptime(hora2, formato)
 * * * *resultado = h1 + h2
 * * * *return str(resultado)
este código devuelve el error :
Código:
TypeError: unsupported operand type(s) for +: 'datetime.datetime' and 'datetime.datetime'
Alguna idea de por que pasa y como solucinarlo ?
  #2 (permalink)  
Antiguo 14/06/2016, 23:44
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 9 meses
Puntos: 1360
Respuesta: Sumar y restar Horas

Cuando sacas una resta entre objetos datetime.datetime, lo que haces es sacar un datetime.timedelta.

Sumar 2 datetime.datetime no tiene sentido y de hecho no esta soportado tal como error te indica.

Lo que si puedes hacer es sumar un timedelta a un datetime.
Ejemplo:
Código:
>>> import datetime
>>> datetime.datetime(2016, 6, 15) + datetime.timedelta(hours=26, minutes=2, seconds=1)
datetime.datetime(2016, 6, 16, 2, 2, 1)
  #3 (permalink)  
Antiguo 10/07/2016, 05:27
Avatar de PUAROT  
Fecha de Ingreso: octubre-2004
Ubicación: Sevilla
Mensajes: 34
Antigüedad: 20 años, 1 mes
Puntos: 1
Respuesta: Sumar y restar Horas

Ante todo gracias por responder !!!

Gracias por la respuesta, efectivamente lo he realizado con timedelta, pero sigo sin entender muy bien por que no se pueden sumar horas y no restarlas, para mi tiene la misma lógica el poder sumarlas que poder restarlas

Etiquetas: horas, restar
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:00.