FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
Resta de horas
Resta de horas
Estimados amigos del club como puedo restar dos horas Ejemplo1 : 12:00 - 14:00 = 2 horas bien Ejemplo2 : 08:00 - 12:00 = 4 horas bien Ejemplo3 : 22:00 – 08:00 = 14 horas malo deberian ser 10 horas Estoy trabajando con el componente TdatetimePicker Si alguien me sugiere otra se lo agradezco Gracias |
#2
|
||||
|
||||
Hola,
A ver qué tal esto:
|
#3
|
||||
|
||||
Que tal esto otro:
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
||||
|
||||
El problema te ocurre porque debes estar restando la propiedad Time cuando en realidad debes utilizar la porpiedad DateTime.
Porque en tu caso las 08:00 son del día siguiente, y si no incluis la parte del día no se va a reflejar. Suerte
__________________
[Crandel] |
#5
|
|||
|
|||
resta de horas
Amigos del club he solucionado el problema de la siguiente manera, quizás no es la mas optima pero para mi problema esta OK, ya que necesito mostrar el día en un campo y la hora en otro aquí mando código por si alguien lo necesitara.
Gracias
Última edición por dec fecha: 02-01-2008 a las 18:44:20. |
#6
|
|||
|
|||
Restar horas
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 |
#7
|
||||
|
||||
Para ese caso, tenés también las funciones MinutesBetween y SecondsBetween.
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#8
|
|||
|
|||
Gracias,
ahora solo tengo que realizar las operaciones correspondiente. |
#9
|
|||
|
|||
Resta de horas y minutos
Cita:
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!! |
#10
|
|||
|
|||
Resta de horas y minutos
Cita:
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!! |
#11
|
||||
|
||||
cuales son los segundos de los dos tiempos?
asegurate que sean cero sino te interesan.
__________________
[Crandel] |
#12
|
|||
|
|||
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 |
#13
|
||||
|
||||
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 |
#14
|
||||
|
||||
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 |
#16
|
||||
|
||||
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/ |
#17
|
||||
|
||||
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 |
#19
|
||||
|
||||
Ya.. tengo lista una parte...
me explico... como los valores los tomo de un StringGrid, en donde tiene las sgtes columnas 0 -> Dias de Semana (Lun, Mar, Etc) 1 -> Fecha 2 -> Hora de Entrada1 3 -> Hora de Salida1 4 -> Hora de Entrada2 5 -> Hora de Salida1 6 -> Hora de Entrada3 7 -> Hora de Salida1 8 -> Suma de Horas Trabajadas El problema lo tengo cuando en una celda específica no existe nada... y preguntar por cada uno.. me dará mucho trabajo... existe una forma de que si el valor es vacio no me de error... y el otro problema que se me puede ocacionar es si solo existe hora de entrada y no de salida....???? o Viceversa Bueno, se supone que en la columna 8 del StringGrid debo poner esto (se que esta en minutos.. pero despues lo arreglo)
Espero me hayan entendido... Salu2
__________________
BlueSteel Última edición por BlueSteel fecha: 04-04-2008 a las 01:27:52. Razón: ordenar |
|
|
|