![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
|||
|
|||
|
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!! |
|
#2
|
||||
|
||||
|
cuales son los segundos de los dos tiempos?
asegurate que sean cero sino te interesan.
__________________
[Crandel] |
|
#3
|
|||
|
|||
|
Resta horas y minutos
Gracias por tu preocupación amigo,
los segundos en la hora son cero, sin embargo no entiendo porque al restar las horas algunas veces saca datos exactos, pero en otros no como en el caso del ejemplo. Mil gracias por su ayuda Saludos ![]() |
|
#4
|
||||
|
||||
|
Creo que estas haciéndote un lio para la operación.
Con el ejemplo citado, podrías indicarnos que resultado te da esta operación:
Seguramente hay fracciones de segundo por allí involucradas.. ![]()
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
|
#5
|
||||
|
||||
|
Hola
estaba revisando este hilo... y me queda una duda... el problema es que tengo la hora 09:16:00 pero lo tengo en formato de String... para convertirlo utilizo el StrToTime(hora) con HoursBetween(HoraFin, HoraIni) me entrega las horas que existen entre ambas... pero en que formato las estaría entregando ??? Salu2
__________________
BlueSteel |
|
#7
|
||||
|
||||
|
Cita:
Si yo quiero saber cuantas son las horas entre 9:00 AM y 9:59:59 AM esta funcion me devolvera 0. Cita:
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
|
#8
|
||||
|
||||
|
Es decir...
tendria entonces que preguntar por los minutos transcurridos entre dos horas.. el valor dividirlo por 60 para así obtener la cantidad de horas y minutos... Ok... veré como realizo esto... Salu2 ![]() ![]()
__________________
BlueSteel |
![]() |
|
|
|