![]() |
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 |
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 ;).
|
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 |
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