Pessoal,
to fazendo um projeto e preciso lidar com uma data passada pelo usuario, queria que a mesma - pois no caso o projeto é de uma biblioteca - recebesse a data, considerando dias uteis, sabados e domingos, dissesse ao usuario qual dia iria retorna um livro retirado da biblioteca, alguem tem alguma ideia de como faço isso, algo pronto?
Ajuda!
12 Respostas
Você quer algo como “hoje + 7 dias úteis”?
O método mais estúpido (mas que funciona para um número pequeno de dias, como é o caso de um empréstimo de livros, que não deve passar de uns 60 dias…) é pegar a data de hoje*, e ir incrementando e vendo se o dia é sábado, domingo ou feriado (você tem uma tabela de feriados, não?).
Incremente até que seja alcançado o número de dias.
(Use a classe java.util.Calendar, é claro.)
Pronto eu creio que não…
Mas a logica é simples… Adicione a quantidade de dias para a entrega do livro, cheque se este dia é util, caso não, incremente e teste novamente… recursivamente vc conseque retornar a data correta.
Manipular datas no Java é realmente um inferno.
Ainda bem que criaram uma API para isso:
http://joda-time.sourceforge.net/
Se seu sistema vai fazer cálculos com datas, recomendo fortemente usar o Joda Time.
Utilize a API, a classe GregorianCalendar
Outra coisa. Da próxima vez, crie um tópico com título menos amplo, ok?
Para esse tópico, um título como “Ajuda para cálcular data” já estaria ótimo.

Dependendo do sistema vc pode ter como inserir feriados - dependendo da instituição vc pode considerar feriados religiosos, dia do professor, etc. Se for o caso vc precisa consultar essa tabela também.
Existe alguma linguagem em que trabalhar com datas seja facil ?
Fácil, sim. Trivial, não. E talvez não tão portável e preparada para múltiplos calendários. Linguagens como o VB e o Delphi permitem somar números a datas para somar dias, subtrair datas com o sinal de -, entre outras coisas.
Isso é ruim? Posso contar nos dedos quantos sistemas eu tive de desenvolver com suporte multi-calendário: nenhum.
A API do Java deveria ser genérica para quem quer trabalhar com o Calendar genérico, mas prática para quem quer ficar na esfera do GregorianCalendar (que por sinal é usado pela absurda maior parte do mundo). E não cumpriu esse objetivo.
Cálculos envolvendo datas também são uma dor de cabeça. Também é difícil adaptar a API para respeitar o horário de verão.
Tudo isso o Joda Time resolve com grande sucesso, tanto que a API está proposta para entrar nas próximas versões da linguagem como algo oficial. Ela também cobre casos como trabalhar com horas sem datas, datas sem horas, coisas que realmente facilitam a vida de quem está desenvolvendo.
Utilizando Calendar ou GregorianCalendar qual metodo, foma poderia utilizar p/ somar duas datas?
http://java.sun.com/javase/6/docs/api/
Procure por GregorianCalendar
GregorianCalendar cal = new GregorianCalendar();
cal.add(DAY_OF_MOTH, 1);
Agora, para saber quantos dias há entre duas datas… Complica pra caramba.
Novamente, considere com muito carinho usar o Joda Time.
ViniGodoy
O Hibernate sabe mapear as classes do Joda Time?
Nativamente, não… mas o Joda tem suporte ao Hibernate, sim!
http://joda-time.sourceforge.net/contrib/hibernate/
