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!