Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Suma de Horas (https://www.clubdelphi.com/foros/showthread.php?t=49221)

Patho 16-10-2007 16:26:30

Suma de Horas
 
Hola muchachos, tengo el siguiente problema, tengo un programa donde hago la suma de horas (hh:mm:ss) y el problema es que cuando supero las 24 horas en la suma el contador vuelve a 0 por ejemplo si la suma es 26:34:10 la hora suma que muestra es 2:34:10 y no las 26 horas, hay alguna forma de que las pueda transformar a 26 horas y seguir aumentando la suma cuando corresponda??

las horas las rescato de archivos de texto plano .txt ya que asi es como me las entregan, rescado los datos en variables string y hago las sumas con strtotime(variable) para obtener el total de las suma de las horas

ojalá me puedan ayudar


saludos

Patho

jhonny 16-10-2007 16:30:15

Apuesto que la función HoursBetween te ayudara con lo que necesitas, pero recuerda que debes pasarle el valor de la fecha y la hora, no solo la hora porque el algoritmo "creeria" que estas hablando de un solo dia ;).

Lepe 16-10-2007 17:04:40

Otra opción sería no usar fechas y horas.

Al leer del archivo lo pasas todo a segundos y lo guardas en tipo Integer o Int64. Cuando necesites mostrar el texto, con una rutina haces las divisiones oportunas.

Saludos

Patho 16-10-2007 17:38:48

solucionado
 
muchas gracias por los comentarios, lo solucione un poco antes que me despondieras Lepe pero justamente eso fue lo que hice pase todo a segundops y despues realice el paso inverso, aca les pondoi las funciones que use por si a alguien mas le sirva

//** para separar el string de la hora (hh:mm:ss) cada una por separado
procedure Split
(const Delimiter: Char;
Input: string;
const Strings: TStrings) ;
begin
Assert(Assigned(Strings)) ;
Strings.Clear;
Strings.Delimiter := Delimiter;
Strings.DelimitedText := Input;
end;


// Transformacion de Hora a segundos donde Hora es un String (hh,mm,ss)

function cantsegundos(horas:string):integer;
var
segundos : TStringList;
hora,min,seg : longint;
begin
segundos := TStringList.Create;
Split(':',horas, segundos);
hora := strtoint(segundos[0]) * 3600;
min := strtoint(segundos[1]) * 60;
seg := strtoint(segundos[2]);

cantsegundos := hora + min + seg;

end;



//Transformar de Segundos a Hora (hh:mm:ss)

function SegToHour(segundos:longint):String;
var
hora,min,seg : longint;
begin
hora := segundos div 3600;
min := (segundos mod 3600) div 60;
seg := (segundos mod 3600) mod 60;

SegToHour := inttostr(hora) + ':' + inttostr(min) + ':' + inttostr(seg);

end;



estas son las funciones que utilice gracias a todos por sus comentarios y sugerencias



hasta la proxima



Saludos

Patho


La franja horaria es GMT +2. Ahora son las 18:45:34.

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