Pessoal, boa tarde a todos !
Estou com uma dúvida para manipular uma data.
Preciso a partir de uma data qualquer vinda de uma tabela somar 5 dias úteis a ela, excluir o sábado e o domingo sempre.
Como posso manipular esse dado?
Obrigado.
Pessoal, boa tarde a todos !
Estou com uma dúvida para manipular uma data.
Preciso a partir de uma data qualquer vinda de uma tabela somar 5 dias úteis a ela, excluir o sábado e o domingo sempre.
Como posso manipular esse dado?
Obrigado.
Oi,
acho que é isso que tu precisa: http://www.guj.com.br/java/38876-contar-somente-dias-uteis
O único detalhe desse código é que não preve os possíveis feriados
Nel,
Obrigado pela referência, eu havia visualizado este tópico, dei uma lida…
Porém o que preciso é pegar uma data qualquer e a partir desta data somar 5 dias úteis, não verificar entre 2 datas quantos dias úteis existem. Manja?
Tô fuçando por aqui vendo se acho uma luz…
obrigado pela resposta de qualquer forma…
abs
Se não considerar feriados, e se você estiver em um dia útil, então somar 5 dias úteis é a mesma coisa que somar 7 dias corridos, não? Então é só usar a classe Calendar e somar 7 dias.
Se estiver em um sábado, você precisa somar 9 dias corridos, e se estiver em um domingo, some 8 dias corridos.
[quote=entanglement]Se não considerar feriados, e se você estiver em um dia útil, então somar 5 dias úteis é a mesma coisa que somar 7 dias corridos, não? Então é só usar a classe Calendar e somar 7 dias.
Se estiver em um sábado, você precisa somar 9 dias corridos, e se estiver em um domingo, some 8 dias corridos. [/quote]
Para sábado, não seria 6? Sábado + 6 = próxima sexta;
E para domingo, 5? Domingo + 5 = próxima sexta;
Não?
Se for considerar feriado, vai ser bem complicado, considerando as instâncias mundo, país, estado, cidade…
Ah, certo, fiz as contas erradas
Deixa eu ajudar… Eu fiz esse código rapidão.
Só confere se não tem erro, mas fiz uns testes e parece q deu certo.
Se não funcionar, ai tenta ajustar e desculpe a pressa. ehehehe
// Inicializa lista de feriados
List<Date> feriados = new ArrayList<Date>();
Calendar c1 = Calendar.getInstance();
c1.set(2011, 8, 20);
Calendar c2 = Calendar.getInstance();
c2.set(2011, 11, 25);
feriados.add(c1.getTime());
feriados.add(c2.getTime());
int daysToAdd = 15; // quantidade de dias a adicionar
// Incializa data
Calendar cal = Calendar.getInstance();
for (int i = 0; i < daysToAdd; i++) {
cal.add(Calendar.DATE, 1);
if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
|| cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY
|| feriados.contains(cal.getTime())) {
daysToAdd++;
}
}
System.out.println(cal.getTime());
Gabbardo, obrigado pela pro-atividade na ajuda !
As datas não podiam ser fixas pois vinham de uma tabela…
Eu acabei descobrindo que era muito mais complicado do que eu esperava, validar todos os dias uteis, feriados do ano dividido por estado, etc…
Acabei por fazer um lookup em alguns métodos de um model aqui da empresa que tem isso desenvolvido, acabei achando esse projetinho…
Tenso !
Mas muito obrigado galera pela ajuda, os posts tbm abriram minha mente em alguns sentidos…
abraços!
Se ainda interessar, tenho um método que faz algo similar, mas na verdade ele acrescenta dias em uma data considerando apenas os dias úteis.
public static Date adicionarDiasUteis(Date data, Integer qtdeDiasAcrescentados) {
Calendar dataInicial = Calendar.getInstance();
dataInicial.setTime(data);
while(qtdeDiasAcrescentados > 0){
dataInicial.add(Calendar.DAY_OF_MONTH, 1);
int diaDaSemana = dataInicial.get(Calendar.DAY_OF_WEEK);
if (diaDaSemana != Calendar.SATURDAY && diaDaSemana != Calendar.SUNDAY) {
--qtdeDiasAcrescentados;
}
}
return dataInicial.getTime();
}