[quote=ThalesSilva][quote=Hebert Coelho]Você usa jpa/hibernate?
Se sim, em geral eu apenas anoto o campo como sendo data e deixo que o banco salve como quiser, depois eu apenas formato para a view.[/quote]
Não uso.[/quote]No meu antigo trampo não usava o campo como String, mas como date mesmo. E deixava o próprio formato do banco que era MM/dd/yyyy hh:mm:sss . E formatava na unha na hora de salvar e de buscar.
quase a mesma coisa que eu faço com o JPA, só que mais manual.
Ola Thales,
Para persistir no Banco de dados estou usando Calendar:
Calendar data = Calendar.getInstance();
data.setTime(rs.getDate("dataNascimento"));
contato.setDataNascimento(data);
Agora para formatar, fazer cálculos e o que for necessário, estou usando a biblioteca JodaTime, ela é ótima para manipular datas.
Somente um exemplo de um pequeno trecho de um código que estou fazendo:
[code]
DateTime dataAtual = new DateTime(); //pega a data atual para fazer cálculos até a data de hj
DateTime dataNascimento = new DateTime(contato.getDataNascimento());//chamo a data no meu banco de dados
String data = dataNascimento.toString("E - dd/MM/yyyy"); //formata a data
Period periodo = new Period(dataNascimento, dataAtual); //me mostra um período, todo cálculo que preciso de período é feito aqui, daí só os chamo métodos da classe Period que preciso.
Days dias = Days.daysBetween(dataNascimento, dataAtual); //me mostra a quantidade de dias corridos
System.out.println("Data de Nascimento: " + data );
if (periodo.getYears() < 2){
System.out.println("Idade " + periodo.getYears() + " ano " + periodo.getMonths() +" meses "+
periodo.getWeeks() + " semanas e "+ periodo.getDays() + " dias - bebê!");
}
else if (periodo.getYears() >= 2 && periodo.getYears() <= 11){
System.out.println("Idade " + periodo.getYears() + " ano " + periodo.getMonths() +" meses "+
periodo.getWeeks() + " semanas e "+ periodo.getDays() + " dias - criança!");
}
else if (periodo.getYears() > 11 && periodo.getYears() <= 18){
System.out.println("Idade " + periodo.getYears() + " anos - adolescente!");
}
else if (periodo.getYears() > 18){
System.out.println("Idade " + periodo.getYears() + " anos - adulto!");
}
System.out.println("Voce tem " + dias.getDays() + " dias de vida!\n");
}[/code]
Isso me dá para uma data cadastrada no banco como 22/05/2011, o seguinte resultado:
Data de Nascimento: Dom - 22/05/2011
Idade 1 ano 6 meses 0 semanas e 4 dias - bebê!
Voce tem 554 dias de vida!
O legal é que para eu ter esses resultados eu não precisei calcular nada, os método da classe Period e Days, já fizeram isso pra mim. Isso é ótimo pois evita e muito erros de programação, sem falar na rapidez de desenvolver sistemas que envolvam datas.