Ajuda!

12 respostas
Renatha_Accioly

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?

12 Respostas

T

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.)

rodrigoallemand

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.

ViniGodoy

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.

H

Utilize a API, a classe GregorianCalendar

ViniGodoy

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.

:wink:

peczenyj

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 ?

ViniGodoy

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.

Renatha_Accioly

Utilizando Calendar ou GregorianCalendar qual metodo, foma poderia utilizar p/ somar duas datas?

H

http://java.sun.com/javase/6/docs/api/

Procure por GregorianCalendar

ViniGodoy

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.

Marky.Vasconcelos

ViniGodoy
O Hibernate sabe mapear as classes do Joda Time?

ViniGodoy

Nativamente, não… mas o Joda tem suporte ao Hibernate, sim!
http://joda-time.sourceforge.net/contrib/hibernate/

:slight_smile:

Criado 22 de outubro de 2007
Ultima resposta 22 de out. de 2007
Respostas 12
Participantes 7