Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sumar horas (https://www.clubdelphi.com/foros/showthread.php?t=75810)

jlrdz 20-09-2011 18:45:11

Sumar horas
 
Hola un saludo a todos primero que nada, tengo una duda sobre la suma de horas

Código Delphi [-]
var hora1, hora2, horast:TTime;
begin

hora1:=StrToTime('15:00:00');
hora2:=StrToTime('32:00:00');
horast:=hora1+hora2;
end;

Esto me da una excepción y sé que es por que TTime acepta solo hasta 24 horas, he visto otros post sobre esto pero me he enredado con toda la informacion, he visto que hay que usar TDateTime pero para esto le tengo que pasar una fecha y yo sólo quiero que pueda sumar horas sin involucrar fechas, ¿se puede hacer eso?, sumar 15:00 + 23:00+46:30+12:32...?

Esperoque puedan ayudarme, gracias.

ecfisa 20-09-2011 18:58:16

Hola jlrdz.

Es que las horas de un día son 24. Sumarle algo a ese número de horas o realizar una suma que las supere, implica un aumento en un día. No es Delphi, así es el manejo horario.

Si deseas medir magnitudes de tiempo mayores a 24 horas, en esa misma unidad de tiempo, no deberías usar una variable TTime, sino una de tipo Word por ejemplo.

Revisá la funcion EncodeTime y el procedimiento DecodeTime.

Saludos.

luisgutierrezb 20-09-2011 20:48:55

lo que podrias hacer es revisar primero cada valor y dividirlo entre 24 para sacar los dias, y el resto son las horas, y para obtener el valor de la suma, multiplicar los dias por 24 y agregarle la hora, pero si solo sumas horas, para obtener horas y utilizar horas, pues coincido en que uses una varible word, integer, etc...

alej.villa 21-09-2011 16:10:54

Lo otro que puedes hacer es agregar DateUtils a la uses de tu unit y crear una simple regla de 3 con la funcion que te ofrece ese utilidad.
asignas una variable a la funcion para que sepas el resultado seria algo como
****
var
n:integer;
begin
n:= HoursBetween(hora1.time,hora2.time);
showmessage(IntToStr(n));
end.
****

jlrdz 21-09-2011 16:12:32

...
 
Gracias por sus respuestas, estoy trabajando en ello. ;)


La franja horaria es GMT +2. Ahora son las 19:54:26.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi