Foros Club Delphi

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

JerS 23-07-2007 17:31:36

Ayuda acumular Horas
 
Buenas amigos como estan, necesito de su ayuda para que me aclaren una duda que tengo, saben necesito acumular un cierto numero de horas, pero cuando las voy acumulando y la suma sobrepasa las 24 Hrs, me vuelve a comenzar desde cero, es como que me pudiera guardar como maximo 24 Hrs :S... si me puede ayudar seria lo maximo...

jhonny 23-07-2007 17:51:12

Bueno, es que en el acumulado también debes tener en cuenta la fecha, de lo contrario, es como si estuvieras acumulando las horas de un solo día. (Si nos muestras tu codigo, seguramente podríamos ayudarte).

Por otro lado, puedes probar la función HoursBetween, seguramente te ayudara a resolver el problema mas facilmente.

cHackAll 23-07-2007 18:01:17

Cita:

Empezado por jhonny
(Si nos muestras tu codigo, seguramente podríamos ayudarte)

Muy cierto!

Código Delphi [-]
var Start, Last: TTimeStamp; Horas: Cardinal;
begin
 Start := DateTimeToTimeStamp(Now);

...
Sleep(1000); // simplemente para tener una idea!
...

 Last := DateTimeToTimeStamp(Now);
 Horas := ((Last.Date - Start.Date) * 24) + ((Last.Time - Start.Time) div MSecsPerDay);
end;

Un cronometro?

JerS 23-07-2007 18:07:39

Bueno en realidad es un sistema de control de asistencia, y en este muestro la cantidad de horas trabajadas, las tengo guardadas en una tabla, son de tipo time en mysql, pero quiero acumularlas para obtener el total de horas trabajadas en cierto lapso de tiempo

cHackAll 23-07-2007 18:27:01

Tengo una duda incontenible, tal sistema debe incluir a los segundos tambien verdad? por que no guardas la cantidad de segundos trabajados? como el asunto es mensual (supongo), debe reiniciar el contador o iniciar una nueva tupla (registro) mensualmente?

diariamente guarda:

[delphi]
var Entrada, Salida: TTimeStamp; Horas: Cardinal;
begin
Entrada := DateTimeToTimeStamp(Now); // La hora de entrada del empleado del día de hoy


...
...

Salida := DateTimeToTimeStamp(Now); // La hora de salida del mismo empleado
Horas := ((Salida.Date - Entrada.Date) * SecsPerDay) + ((Salida.Time - Entrada.Time) div MSecsPerSec);
end;[delphi]


finalmente tal valor lo añades al antuguo registro. puedes hasta guardar la hora de entrada temporalmente.

courtois 23-07-2007 18:40:16

A mi siempre me ha funcionado esto
Código Delphi [-]
var Entrada, Salida: TDateTime; 
     Horas: Real;
begin
Entrada := Now; // La hora de entrada
...
...
Salida := Now; // La hora de salida del mismo empleado
Horas := (Salida - Entrada) * 24;
end;


La franja horaria es GMT +2. Ahora son las 04:49:16.

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