![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
#10
|
|||
|
|||
|
Resta de horas y minutos
Cita:
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 .Por fa si alguien tiene idea de lo que está pasando necesito una ayudita. Mil Gracias!! |
|
|
|