Clipper/FiveWin - como calcular tiempo

 
Vista:

como calcular tiempo

Publicado por ausencio (2 intervenciones) el 04/12/2006 22:40:46
hola
necesito calcular el tiempo laborado de un trabajador
pero la verdad no se como se hace la formula
no se si es resta o suma u otra operacion
si alguien me puede ayudar a resolver este problema
se lo agradeceria
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Eduardo Flores Rivas

RE:como calcular tiempo

Publicado por Eduardo Flores Rivas (27 intervenciones) el 05/12/2006 01:18:15
Hola Ausencio.

Bueno, supongo que primeramente tendras que ingresar las horas de ingreso y salida del trabajador diariamente, como resultado de esta operacion obtendras una cantidad de horas trabajadas por dia.

Para obtener el resultado de las horas trabajadas del dia tendras q crear una función que te devuelva ese calculo, algo como esto:

FUNC HorasDelDia
PARA HoraInicio,HoraFinal

> instrucciones

RETURN HorasDia

Este resultado lo almacenas (en array o tabla) y continuas el proceso con los siguientes dias, luego sumas todas las horas y obtienes las horas trabajadas en el periodo.

Te explico todo esto pq en realidad no se donde esta tu duda. Si es especificamente en la FUNC HorasDelDia hazmelo saber, tal vez tenga tiempo y cree esta funcion, pero no debe ser muy complicado, es mas ya debe existir algo (has visitado THE-OASIS? creo haber visto algo alli) .

Espero haberte ayudado en algo.

Saludos cordiales,

Eduardo Flores Rivas
Lima - Peru
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como calcular tiempo

Publicado por El Duro (19 intervenciones) el 05/12/2006 04:57:41
Ausencio:

Tu solución es la función SECONDS(), echale una mirada.

La función SECONDS() te devuelve la cantidad de segundos que han transcurrido desde la media noche hasta el momento en que ejecutas la función, en formato de 24 horas, por lo tanto el rango es de 0 hasta 86399.

Veamos un ejemplo, supongamos que un empleado entra a trabajar a las 10:00 AM y sale a las 11:10 AM.

En el momento que ingresa a trabajar se toma la lectura del reloj con la función SECONDS()

nSecEnt := SECONDS()

y se almacena en algun archivo, ahora al salir volvemos a tomar la lectura

nSecSal := SECONDS()

Si consideramos que 60 segundos forman un minuto y que 60 minutos forman una hora, entonces 60 segundos por 60 minutos son 3600 segundos en una hora, de acuerdo ?

Tomando en cuenta lo anterior podemos determinar que en la variable de entrada (nSecEnt) hay 36000 segundos, 3600 segundos por una hora y el entró a las 10 horas entonces 3600 por 10 = 36000, y en la variable de salida (nSecSal) hay 40200 segundos, 3600 segundos en una hora y el salio a las 11 (faltan los minutos) 3600 por 11 = 39600 + 60 segundo por minuto por 10 minutos despues de las 11 es igual a 600 entonces los segundos de la hora de salida son 40200 (39600 + 600).

Por último haciendo una resta obetenemos los segundos que el empleado permaneció en el trabajo 40200 menos 36000 = a 4200 segundos, ahora convertimos los segundos en horas minutos y segundos,

4200 entre 3600 segundos de una hora = 1 hora y sobran 600 segundos
600 entre 60 segundos de un minuto = 10 minutos, por lo tanto en empleado trabajó 1 hora con 10 minutos.

Sencillo verdad ?

El Duro
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como calcular tiempo

Publicado por ausencio (2 intervenciones) el 05/12/2006 17:06:10
muchas gracias
me sirvio mucho
hasta luego
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:como calcular tiempo

Publicado por Raúl (44 intervenciones) el 06/12/2006 01:02:57
Hola Ausencio:

Otra alternativa que tienes para calcular la diferencia en tiempo trabajado, es usando una funcion que viene en la NANFOR.LIB.

La función se llama FT_ELAPSED() a la que le tienes que enviar los siguientes parámetros:
dFechaEntrada ....
dFechaSalida
cHoraEntrada..... en formato hh:mm:ss (idel del TIME() )
cHoraSalida

La función te devuelve un array de doble entrada donde:
[1,1] ......... Cantidad de dias de diferencia ........ nn.nnnn
[2,1] ......... Cantidad de Horas de diferencia..... nn.nnnn
[3,1] ......... Cantidad de Minutos de diferencia.. nn.nnnn
[4,1] ......... cantidad de segundos de diferencia. nn

Es la mejor función que he encontrado para hallar diferencia horaria.

Espero te sirva.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar