Ver la Versión Completa : 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
como asi? ejemplo, please...
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
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
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.
vBulletin v3.6.8, Derechos ©2000-2024, Jelsoft Enterprises Ltd.