Calculando horas especiales

Saludos a los expertos y a los demás también
he estado buscando formas para poder restar dos horas y en todos lugares incluyendo este sitio, he encontrado casi la misma respuesta y ejemplos, pero hay un detalle que se les ha pasado... El cual es, que todo lo calculan basando el minuto 60 de la hora dicho de otro modo, solo están tomando la hora standard de 60 minutos, espero ser claro hasta ahí,
mi pregunta es que me he topado con un caso curioso donde las horas a calcular se pueden dar como hora standard de 60 minutos por hora, o puede variar a 50 o 45 minutos por hora, un ejemplo..
Un docente que va a dictar su clase, comienza a las 08:10 y finaliza a las 10:40.. Todos dirán, fácil ahí solo hay 02:30... Pero la cosa es que es hora académica el cual para este ejemplo una hora no es de 60 minutos, si no de 50 minutos, por lo cual
el total de horas a dictar seria de 03:00 y no de 02:30
sacando la cuenta a la vista sale dos, la cosa es crear las instrucciones para que me de ese resultado "02:30"
Y si el docente llega 1 minuto tarde entonces las horas que ha dictado seria de 08:11 hasta las 10:40, entonces el total de horas dictadas seria de 02:49,
eso que no incluye receso entre horas. La cosa es, hay alñgun ejemplo para restar horas, ¿pero tomando en cuenta el total de minutos por hora?, estoy tratando de procesar eso, agradecería una ayuda de parte de algún experto o usuario, gracias, espero no haber confundido, chau

1 respuesta

Respuesta
1
Tal vez esto te sea útil:
nMinsHora = 50       && Minutos a contar por Hora
cTieIni = "08:10"
cTieFin = "10:40"
nMinsIni = VAL(SUBSTR(cTieIni, 4, 2))
nHorasIni = VAL(SUBSTR(cTieIni, 1, 2))
nMinsFin = VAL(SUBSTR(cTieFin, 4, 2))
nHorasFin = VAL(SUBSTR(cTieFin, 1, 2))
** Aquí se saca el total de Minutos transcurridos
nMinsTot = ((nHorasFin - nHorasIni) * 60) - nMinsIni + nMinsFin
** Aquí el total de Horas en formato numérico
nTotal = nMinsTot / nMinsHora
cHoraTot = LTRIM(STR(INT(nTotal)))
cHoraTot = REPLICATE("0", 2 - LEN(cHoraTot)) + cHoraTot
cMinTot = LTRIM(STR(nMinsHora * (nTotal - INT(nTotal))))
cMinTot = REPLICATE("0", 2 - LEN(cMinTot)) + cMinTot
** Total de Horas en formato caracter
cTotal = cHoraTot + ":" + cMinTot
Muchas Gracias, Experto, me quede hasta tarde procesando el problemita y también llegue a la respuesta, incluyendo los minutos de receso y tardanzas, aun que me salio unas cuantas lineas más, pero gracias a tu ejemplo, he pulido todo eso, y consistenciado mucho mejor, Soy Miguel Angel y humildemente te agradezco tu ayuda, me ha servido para ampliar más mis conocimientos, trabajo desde mucho desarrollando aplicaciones y sistemas informáticos, y siempre me encuentro con casos. Para otra duda que tenga, o vacilare en preguntar, cada día se aprende algo nuevo, saludos a los expertos y usuarios de TODOEXPERTOS, y si en algo pueda aportar para ayudar a otros lo are..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas