• ¿Quieres apoyar a nuestro foro haciendo una donación?, entra aquí.

Ignorar horas no laborales.

rjmcready

Ocios@
Registrado
2009/04/21
Mensajes
639
Sexo
Macho
Estimados una vez mas, vengo por sabiduría. Necesito ignorar horas que no son laborales. las horas laborales son de 8:30 a 18:30. como las saco, yo tengo una función para fin de semanas que es así(funciona).

private bool esdialaboral(DateTime fer)
{
if (fer.DayOfWeek == DayOfWeek.Saturday || fer.DayOfWeek == DayOfWeek.Sunday)
{
return false;
}
return true;
}
}

y la otra función la tengo así

private bool eshoralaboral(DateTime fer)
{
if (((fer.Hour >= 8) && (fer.Minute >= 30))
|| ((fer.Hour <= 18) && (fer.Minute <= 30)))
{
return true;
}
return false;
}

pero cuando ejecuto, me sigue contando las horas que no están entre esos rangos, alguna idea. Gracias!!
 
Si separas la lógica se hace más claro.

Código:
private bool EsHoraLaboral(DateTime fer)
{
    bool inicio = (fer.Hour == 8 && fer.Minute >= 30) || (fer.Hour > 8);
    bool fin = (fer.Hour == 18 && fer.Minute <= 30) || (fer.Hour < 18);
    return (inicio && fin);
}

Hay que tener en cuenta también que la hora de almuerzo por lo general no se considera como horario laboral.
 
Si separas la lógica se hace más claro.

Código:
private bool EsHoraLaboral(DateTime fer)
{
    bool inicio = (fer.Hour == 8 && fer.Minute >= 30) || (fer.Hour > 8);
    bool fin = (fer.Hour == 18 && fer.Minute <= 30) || (fer.Hour < 18);
    return (inicio && fin);
}

Hay que tener en cuenta también que la hora de almuerzo por lo general no se considera como horario laboral.

amigo consulta, esta función te ignora las horas que están en el rango de esta función?. Por que esta función (EsHoraLaboral). Luego la retorno a un foreach, te lo pregunto por que yo estoy haciendo un sistema de ticket en c# y esta listo, de hecho quería presentarlo aquí en el foro, pero según el tiempo consumido que tengo. las horas me la cuentas igual. Ejemplo: Si ayer alguien inserto una orden de trabajo a las 19:30, no me debería contar hasta las 8:30 de hoy, pero sin embargo me cuenta las 13 horas que pasaron, y me debería contar recién desde las 8:30 de hoy. Si son las 12:30 ahora me debería contar solo 4 horas no 18. Gracias!. llevo con esa última función como hace 3 días y así como lo estaba haciendo yo, no me funciona. Probé tu método y tampoco me dio resultado. Gracias igual por la intención (Y).
 
Última edición:
Volver
Arriba