Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Resta de horas y minutos (https://www.clubdelphi.com/foros/showthread.php?t=52515)

saltamirano 23-01-2008 16:10:15

Resta de horas y minutos
 
Resta de horas y minutos
Cita:
Empezado por angara
Probe el codigo me funciona para las horas pero en mi caso tambien nececito los minuto y segundos, para un sistema de control de ingreso de personal
gracias


:o Saludos amigos:

He revisado este hilo y me ha servido de mucha utilidad, tengo dos DateTimePicker, en los cuales se ingresa Hora de Inicio y Hora de Fin, en mi aplicación requiero restar las dos horas para obtener el tiempo ocupado. Tengo el siguiente código:

procedure TForm_Soporte.DateTimePicker_HraIniChange(Sender: TObject);
var dMiHraIni : TTime;
var HraIniStr: string;
begin
dMiHraIni := DateTimePicker_HraIni.Time;
HraIniStr := (TimeToStr(dMiHraIni));
self.DBEdit_HraIni.Text := HraIniStr;
end;


procedure TForm_Soporte.DateTimePicker_HraFinChange(Sender: TObject);
var dMiHraFin, tiempo1, tiempo2 : TTime;
var HraFinStr, dif_hra, dif_min, dif_seg, time: string;
var dif_hra_int, dif_min_int : integer;
var min_calc, seg_calc: integer;


begin
dMiHraFin := DateTimePicker_HraFin.Time;
HraFinStr := (TimeToStr(dMiHraFin));
self.DBEdit_HraFin.Text := HraFinStr;

tiempo1:= DateTimePicker_HraFin.Time;
tiempo2:= DateTimePicker_HraIni.Time;

dif_hra := inttostr(HoursBetween(tiempo2 , tiempo1));
dif_hra_int := strtoint(dif_hra);


if dif_hra_int > 0 then
begin
min_calc := ((MinutesBetween(tiempo2 , tiempo1))mod (dif_hra_int * 60));
dif_min := inttostr(min_calc);
end
else
begin
dif_min := inttostr(MinutesBetween(tiempo2 , tiempo1));
end;


if min_calc > 0 then
begin
seg_calc := (SecondsBetween(tiempo2 , tiempo1))mod (min_calc * 60);
dif_seg := inttostr(seg_calc);
end
else
begin
dif_seg := inttostr(SecondsBetween(tiempo2 , tiempo1));
end;
}
time := dif_hra + ':'+ dif_min + ':'+ dif_seg;
self.DBEdit_time.Text := time;
self.DBEdit_time.Show
end;


Al restar las horas por ejemplo: 8:00 a 14:30 el resultado es de: 6:29 y no
6:30 como debería ser:mad:.

Por fa si alguien tiene idea de lo que está pasando necesito una ayudita. Mil Gracias!!

enecumene 23-01-2008 16:31:04

Hola, Por Favor trata de usar las etiquetas Delphi:

Código Delphi [-]
procedure TForm_Soporte.DateTimePicker_HraIniChange(Sender: TObject);
var dMiHraIni : TTime;
var HraIniStr: string;
begin
dMiHraIni := DateTimePicker_HraIni.Time;
HraIniStr := (TimeToStr(dMiHraIni));
self.DBEdit_HraIni.Text := HraIniStr;
end;

procedure TForm_Soporte.DateTimePicker_HraFinChange(Sender: TObject);
var dMiHraFin, tiempo1, tiempo2 : TTime;
var HraFinStr, dif_hra, dif_min, dif_seg, time: string;
var dif_hra_int, dif_min_int : integer;
var min_calc, seg_calc: integer;

begin
dMiHraFin := DateTimePicker_HraFin.Time;
HraFinStr := (TimeToStr(dMiHraFin));
self.DBEdit_HraFin.Text := HraFinStr;
tiempo1:= DateTimePicker_HraFin.Time;
tiempo2:= DateTimePicker_HraIni.Time;

dif_hra := inttostr(HoursBetween(tiempo2 , tiempo1));
dif_hra_int := strtoint(dif_hra);

if dif_hra_int > 0 then
begin
min_calc := ((MinutesBetween(tiempo2 , tiempo1))mod (dif_hra_int * 60));
dif_min := inttostr(min_calc);
end
else
begin
dif_min := inttostr(MinutesBetween(tiempo2 , tiempo1));
end;

if min_calc > 0 then
begin
seg_calc := (SecondsBetween(tiempo2 , tiempo1))mod (min_calc * 60);
dif_seg := inttostr(seg_calc);
end
else
begin
dif_seg := inttostr(SecondsBetween(tiempo2 , tiempo1));
end;
}
time := dif_hra + ':'+ dif_min + ':'+ dif_seg;
self.DBEdit_time.Text := time;
self.DBEdit_time.Show
end;

Ves que se ve mejor?:)

Saludos.

saltamirano 23-01-2008 17:35:48

Resta de horas y minutos
 
Muchas Gracias enecumene y mil disculpas a todos

jachguate 23-01-2008 18:57:24

Cierro este hilo, pues el tema ya se está tratando en este otro.

Por favor, ¡respeto a la guia de estilo!

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 10:01:29.

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