i

Please enable JavaScript to view this site.

Navegación: Manual del Usuario > Modelador > Misceláneos > Procesamiento de Alertas

Cálculo de Tiempos

En los tópicos anteriores pertenecientes al "Procesamiento de Alertas" hemos indicado dos tipos diferentes de cálculos:
 

Cálculo de Tiempos - Segundos por Periodo.

En este punto se explica el mecanismo que utiliza el sistema para calcular la cantidad de segundos que conforman un periodo de tiempo, que está expresado como una Cantidad de Días (DD), Horas (HH), Minutos (MM) y Segundos (SS).

Existen dos situaciones diferentes:

 

a)Considerando Tiempo Lineal o Calendario

SegundosPorPeriodo = DD * 86400 + HH * 3600 + MM * 60 + SS

 

b)Considerando Tiempo Laboral

Cuando se trabaja con tiempo laboral, la diferencia es que la duración de la jornada laboral queda establecida en el calendario laboral que utilice el participante responsable de la actividad.

En el calendario de define la duración del Día Laboral, mediante los atributos Cantidad de Horas y Cantidad de Minutos.

Entonces, tendremos que la cantidad de segundos por jornada laboral será:

SegundosPorDia = Cantidad de Horas * 3600 + Cantidad de Minutos * 60

Luego:

SegundosPorPeriodo = SegundosPorDia * DD + HH * 3600 + MM * 60 + SS

 

Cálculo de Tiempos – Fecha + Cantidad de Segundos

En este punto se explica el mecanismo que utiliza el sistema para calcular una fecha, que surge como sumatoria de una fecha dada mas una cierta cantidad de segundos.

Nueva Fecha = Fecha + Cantidad de Segundos.

 

Existen dos situaciones diferentes:

 

a)Considerando Tiempo Lineal o Calendario

En estos casos no existen complejidades. Se utilizan los tipos nativos del lenguaje Java para realizar la suma y se retorna el valor resultante.

 

b)Considerando Tiempo Laboral

Cuando se trabaja con tiempo laboral, la idea es que la cantidad de segundos que se suman sean laborables.  Para determinar si son laborables, se utiliza la definición de “Calendarios”, “Fechas Particulares” y “Días Feriados”. En particular, se usa el calendario del participante responsable de la actividad.

 

Un calendario laboral establece diferentes periodos laborables:

Día lunes

Día Martes

 

Día Miércoles
Es fecha PARTICULAR

Día Jueves

 

L1

 

L2

 

 

L3

 

L4

 

 

L5

 

L6

 

 

L7

 

L8

 

 

El esquema representa a un calendario que define, para cada día de la semana, franjas u horarios laborables L1, L2,…..L8.

Cada una de las franjas laborables, está perfectamente definida por el calendario, y tiene una fecha y hora de inicio y una fecha y hora de fin. Para cada una de ellas, se conocen claramente los segundos laborables que la conforman.

La definición de "Días Feriados" hace que no sean considerados como laborables.

La definición de "Fechas Particulares" tiene precedencia sobre el "Calendario" del usuario y también sobre la definición de "Días Feriados", y permiten redefinir los horarios laborales de un día particular.

 

Ejemplos:

Para simplificar, supongamos que cada día tiene 2 franjas laborables de 4 horas. Por la mañana se trabaja de 8:00 a 12:00 y por la tarde de 14:00 a 18:00.

Entonces cada franja horaria tiene (4 x 60 x 60) = 14.400 Segundos.

Supongamos también que el día miércoles es un día particular, porque solamente se trabaja en la mañana.

 

Ejemplo 1

FECHA                 = Lunes 7:00

SEGUNDOS         = 3600 (1 hora)

NUEVA FECHA         = Lunes 09:00

 

Día lunes

Día Martes

 

Día Miércoles
Es fecha PARTICULAR

Día Jueves

 

L1

 

L2

 

 

L3

 

L4

 

 

L5

 

L6

 

 

L7

 

L8

 

 FECHA                       NUEVA FECHA

 Lunes, 07:00               Lunes 09:00

 

Ejemplo 2

FECHA                = Lunes 7:00  

SEGUNDOS        = 18.000 (05 Horas)

NUEVA FECHA        = Lunes 15:00

 

Día lunes

Día Martes

 

Día Miércoles
Es fecha PARTICULAR

Día Jueves

 

L1

 

L2

 

 

L3

 

L4

 

 

L5

 

L6

 

 

L7

 

L8

 

 FECHA                       NUEVA FECHA

 Lunes, 07:00                Lunes 15:00

 

Ejemplo 3

FECHA                = Lunes 7:00  

SEGUNDOS        = 36.000 (10 Horas)

Nueva Fecha        = Martes 11:00

 

Día lunes

Día Martes

 

Día Miércoles
Es fecha PARTICULAR

Día Jueves

 

L1

 

L2

 

 

L3

 

L4

 

 

L5

 

L6

 

 

L7

 

L8

 

 FECHA                       NUEVA FECHA

 Lunes, 07:00                Martes 11:00

 

Ejemplo 4

FECHA                = Martes 17:00  

SEGUNDOS        = 21.600 (06 Horas)

Nueva Fecha        = Jueves 09:00  

 

Día lunes

Día Martes

 

Día Miércoles
Es fecha PARTICULAR

Día Jueves

 

L1

 

L2

 

 

L3

 

L4

 

 

L5

 

L6

 

 

L7

 

L8

 

                                                       FECHA                                            NUEVA FECHA

                                                       Martes 17:00                                      Jueves  09:00

 

Aquí tenemos que el día miércoles en la tarde no es laborable.

Entonces, de las 6 horas, se utilizan 1 hora del día martes, 4 horas del miércoles y queda 1 hora para el jueves.

 

Observación:

Los cálculos de tiempo, cuando se trabaja con tiempo laboral, se realizan siempre considerando el calendario laboral del participante que está ejecutando la actividad.

No obstante, el valor resultante del cálculo, que corresponderá a una fecha-hora, siempre se almacena en base respetando la zona horaria del servidor (Calendario 01).

Luego, cuando este valor deba ser usado nuevamente, ya sea para realizar otro cálculo o para mostrado a un usuario, se lo transforma según la diferencia horaria que corresponda al calendario usado por dicho usuario.

Es decir, para manejo de campos fecha–hora , se realiza lo siguiente:

Se lee CAMPO desde la base de datos. (Se asume que está en TimeZone del Calendario 01).

 

Se expresa en el time-zone del usuario responsable. (Calendario N).

 

Se visualiza el valor o se realiza cálculo con ese valor.

 

Si corresponde actualizar en la base:        

oSe convierte a Time Zone del Calendario 01

oSe almacena CAMPO en Base

 

Envianos tu comentario
Compartir en Twitter Compartir en Linkedin Enviar por Email Imprimir