Array
(
)

Função para calcular uma data de segunda a sexta

Abermar
   - 28 mar 2008

Pessoal,

Por favor, preciso calcular uma data válida, e quero que essa ´função´ me retorne um dia válido(de segunda a sexta). Ex: se eu passar um dia que caia no sábado a função me retorna a segunda feira como dia válido ou seja se eu passar um dia que é sábado domingo ou feriado a mesma me retorna o próximo dia válido.

Agradeço a todos
Vlw

Groove
   - 28 mar 2008

opa blz???

esse retorno q vc fala é o que?
string ???
datetime??

eu fiz algo parecido mas é preciso adaptar se eu souber qual o retorno q vc quer ficaria mais facil!!!

Valew!!! 8)

Groove
   - 28 mar 2008

Bom vamos ver se é isto heheheheh

#Código

    private string retornadata()
    {
        //meu webservice 
        WsSinob.Service ws = new WsSinob.Service();
        DateTime diasemana = new DateTime();
        //aqui busco se existe a data do feriado do dia corrente para comparar (datatable)
        //dia e hora (geralmente eu uso a mesma data do banco para q podemos 
        //ter certeza que está vindo a data certa já q a data do feriado está vindo de lá)
        DataTable feriado = ws.GetDataFeriadoByDataFeriado(DateTime.Now);
        //inteiro
        int dif = 0;
        //dia e hora (geralmente eu uso a mesma data do banco para q podemos 
        //ter certeza que está vindo a data certa já q a data do feriado está vindo de lá)
        diasemana = DateTime.Now;

        if ((diasemana.DayOfWeek.ToString() != "Sunday") && (diasemana.DayOfWeek.ToString() != "Saturday"))
        {
            if (feriado.Rows.Count == 1)
            {
                dif = dif + 1;
                DateTime datafin = diasemana.AddDays(dif);
                datafin = diasemana.AddDays(dif);

                if (datafin.DayOfWeek.ToString() == "Sunday") 
                {
                    dif = dif + 1;
                }
                if (datafin.DayOfWeek.ToString() == "Saturday")
                {
                    dif = dif + 2;
                }
            }
        }

        if ((diasemana.DayOfWeek.ToString() == "Sunday") && (feriado.Rows.Count == 0))
        {
            dif = dif + 1;
        }
        if ((diasemana.DayOfWeek.ToString() == "Saturday") && (feriado.Rows.Count == 0))
        {
            dif = dif + 2;
        }

        //retorno com data
        DateTime datafinal = diasemana.AddDays(dif);
        datafinal = diasemana.AddDays(dif);

        //retorno como dia da semana por extenso
        string diadasemanaporextenso;
        diadasemanaporextenso =  datafinal.DayOfWeek.ToString();
        //retorno como string (mas poderia ser datetime)
        return Convert.ToString(diadasemanaporextenso);

    }

tomara q tenha ajudado
bom só uma coisa seria melhor vc criar uma tabela ´Feriados´ no seu banco já q os mesmo (feriados) mudam ano apos ano vai ser melhor controlar eles de lá e outra vc não vai precisar recompilar o prog só porque um tiatino mudou a data do feriado ´tal´.
Só precisa de 3 colunas:
idFeriado -- (PK) (se quiser pode ser identy)
DataFeriado -- (datetime)
Descrição -- (varchar (50)) (no prog não vai precisar disso (acho eu) mas é para identificar melhor no banco)

Bom foi isso q consegui, estou no serviço e pra ajudar os amigos fica dificil, valew galera!!! :lol:

Abermar
   - 30 mar 2008

Vlw Groove, vou dar uma olhada neste código e qualquer dúvida eu posto no fórum novamente.
Vlw pela força!