Fórum Função para calcular uma data de segunda a sexta #20758
28/03/2008
0
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
Abermar
Curtir tópico
+ 0Posts
28/03/2008
Groove
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)
Gostei + 0
28/03/2008
Groove
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:
Gostei + 0
30/03/2008
Abermar
Vlw pela força!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)