Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TDateTime para +de 24hrs. (https://www.clubdelphi.com/foros/showthread.php?t=38053)

mez 30-11-2006 18:54:38

TDateTime para +de 24hrs.
 
eso.

Quiero ir acumulando una cantidad de horas y que al final me salga, por ejemplo 27:19:00 (27 horas, 19 minutos, 00 segundos)

Estoy usando TDateTime para sumar y al parecer esto va bien, pero cuando le doy DecodeTime, me sale 3:19:00 osea, pasó los 24hrs y empieza de cero?

gracias.

luisgutierrezb 30-11-2006 19:51:43

el TDateTime te maneja maximo las 24 horas, sin embargo cuando sumas mas de 24 horas, te aumenta el dia, asi que multiplica los dias x 24 mas las horas, esto inicializando un TDateTime a cero

mez 30-11-2006 20:00:37

como asi? ejemplo, please...

mez 01-12-2006 20:01:56

lo solucioné asi:

aux:=floor(HoraAcumulada)*24;
DecodeTime(HoraAcumulada,hora,minuto,segundo,msegundo);
hora:=hora+aux;

fedelphi 02-12-2006 00:55:49

hola mez, una vez tenia que acumular horas y empece a realizarlo con decodetime y demas yerbas, pero me lleve cada dolor de cabeza!!! para modificarlo, tratar y controlar esos datos era realmente terrible por lo que opte por hacerlo distinto, si solo quieres acumular las horas pon este procedimiento
Código Delphi [-]
procedure TFPlanillaGral.devuelve_hora_integer(hora: TTime; var hora_int,  minutos_int: integer);
var
  string_aux,hora_aux,minutos_aux:string;
begin
  string_aux:=timetostr(hora);
  hora_aux:=copy(string_aux,1,pos(':',string_aux)-1);
  delete(string_aux,1,3);
  minutos_aux:=copy(string_aux,1,pos(':',string_aux)-1);
  hora_int:=strtoint(hora_aux);
  minutos_int:=strtoint(minutos_aux);
end;


y lo llamas asi
Código Delphi [-]
devuelve_hora_integer(HORASEMPLEADAS,horas_entero,minutos_entero);
           Horas_acumuladas:=HorasxRubro+horas_entero;
           Minuto_acumulados:=Minutos_acumulados+minutos_entero;
           if Minutos_acumulados>=60 then
           begin
             Minutos_acumulados:=Minutos_acumulados-60;
             Horas_acumuladas:=Horas_acumuladas+1;
           end;
Espero te sirva y te ahorre muchos dolores de cabeza. Suerte
Fede
PD:Te queda tener en cuenta los segundos, que en mi caso no eran necesarios.


La franja horaria es GMT +2. Ahora son las 23:21:03.

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