Power Builder - AYUDA PARA CALCULAR HORAS Y MINUTOS...

 
Vista:
Imágen de perfil de Antonio
Val: 176
Bronce
Ha mantenido su posición en Power Builder (en relación al último mes)
Gráfica de Power Builder

AYUDA PARA CALCULAR HORAS Y MINUTOS...

Publicado por Antonio (1271 intervenciones) el 04/12/2004 01:56:02
Hola a todos:

Tengo un pequeño problema... desarrolle una aplicacion la cual guarda la hora en que entra y sale un usuario, estos datos los guardo en dos campos (HINICIO y HTERMINO) son de tipo string y los datos se guardan de esta manera; 13:25 PM y 18:30 PM respectivamente, ahora bien, cuando recupero el registro coloco en dos variables los datos correspondientes quedando asi:

ls_inicio = Trim ( GetItemString ( dw_datos, ll_row, 'HINICIO' ) )
ls_termino = Trim ( GetItemString ( dw_datos, ll_row, 'HTERMINO' ) )

ya que tengo estos dos datos, necesito calcular las horas y minutos (ojo, no necesito calcular dias solo horas y minutos) correspondientes y ponerlas en un objeto de tipo static text para que el supervisor pueda ver cuanto tiempo permanecio el usuario dentro del sistema.

La cuestion es que utilizo la funcion de SecondsAfter() y lo divido entre 60 para que me de los minutos y nuevamente entre 60 para determinar las horas, pero no me resulta...

El otro problema es que hay usuarios que trabajan el turno de la noche, por lo cual ingresan a las 7:00 PM y salen a las 6:00 AM del dia siguiente y esto me provoca que la funcion SecondsAfter() me devuelve un numerototototototote de segundos los cuales equivalen a dias y necesito calcular solo las horas y minutos que estuvieron trabajando.

Alguien tiene alguna idea ?... o si tiene un ejemplo, se lo agradecere muchísimo, me es urgente.

Gracias,
saludos
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

RE:AYUDA PARA CALCULAR HORAS Y MINUTOS...

Publicado por Oscar (1178 intervenciones) el 04/12/2004 15:07:12
Hola Antonio:
La función SecondsAfter() se resiente cuando cuando el segundo parámetro es menor al primero; pero creo que es posible realizar algunas adaptaciones para resolver el problema que mencionas:

Long ll_segundos
Time lt_HoraInicio, lt_HoraFin

lt_HoraInicio=19:04:00
lt_HoraFin=06:11:10

if lt_HoraInicio< lt_HoraFin then
//No hay problema. Todo normal.
//Se calcula el tiempo transcurrido en segundos
ll_segundos=SecondsAfter(lt_HoraInicio, lt_HoraFin)
//Devuelve Cantidad de tiempo que pasó en hh:mm:ss
st_1.Text=String( RelativeTime(Time("hh:mm:ss"), ll_segundos))
else
//Calculamos el tiempo a la inversa
//y restamos de 24 horas (86400 segundos)
ll_segundos=SecondsAfter(lt_HoraFin, lt_HoraInicio)
ll_segundos=86400 - ll_segundos
//Devuelve Cantidad de tiempo que pasó en hh:mm:ss
st_1.Text=String( RelativeTime(Time("hh:mm:ss"), ll_segundos))
end if

Nota: Por si acaso, acá van algunas consideraciones:
- Debes trabajar con un formato de 24 horas (no debes usar AM, ni PM). -- Debes respetar el formato de mantener dos dígitos:
Ejemplo: Debes escribir: 06:11:10 (no debes usar: 6:11:10)
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