none
Retirar Sábados e Domingos do Cálculo RRS feed

  • Pergunta

  • Tenho um projeto em que trabalho com atividades de um projeto, minhas atividades possui um determinado tempo para serem concluídas, porém o projeto tem que fazer o cálculo somente com dias Administrativos. Por exemplo uma atividade começa no dia 26/10/2015(segunda) e sua duração possui 7 dias ele teria que fazer o calculo e me retornar que o fim da atividade seria no dia 03/11/2015 (seg, ter, quar, qui, sex, seg e ter) teria que remover os sábados e domingos.

    Meu projeto está desse jeito:

    atividade.Inicio = status.InicioPrevisto.Value;
    atividade.Duracao = 7;
    atividade.Termino = atividade.Inicio.AddDays(duracao);

    Alguém sabe como me ajudar?


    Por favor, lembre-se de “Marcar como Resposta” as respostas que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    domingo, 25 de outubro de 2015 18:25

Respostas

  • Boa tarde.

    Veja se isso não te ajudaria:

    public static DateTime AddBusinessDays(DateTime date, int days)
    {
        if (days < 0)
        {
            throw new ArgumentException("days cannot be negative", "days");
        }
    
        if (days == 0) return date;
    
        if (date.DayOfWeek == DayOfWeek.Saturday)
        {
            date = date.AddDays(2);
            days -= 1;
        }
        else if (date.DayOfWeek == DayOfWeek.Sunday)
        {
            date = date.AddDays(1);
            days -= 1;
        }
    
        date = date.AddDays(days / 5 * 7);
        int extraDays = days % 5;
    
        if ((int)date.DayOfWeek + extraDays > 5)
        {
            extraDays += 2;
        }
    
        return date.AddDays(extraDays);
    
    }
    Fonte: LINK.


    Att., Rafael Simor

    • Sugerido como Resposta JAlvez42 domingo, 25 de outubro de 2015 20:32
    • Marcado como Resposta Marcos SJ segunda-feira, 26 de outubro de 2015 12:04
    domingo, 25 de outubro de 2015 18:38