Melhor forma de trabalhar com data/hora no Java

Eu tenho um atributo em uma classe minha que representa uma data/hora (data E hora, exemplo: “2013/05/08 18:16:35”)

Qual o tipo mais apropriado para esse atributo em minha classe? Um Calendar, Date ou uma String?

Se eu usar String é uma má prática de programação?

Grato desde já, abraços.

Acho q a melhor forma de trabalhar com data e hora no Java é utilizando a classe Calendar, mesmo pq se vc precisar validar datas, fazer cálculos entre outros os métodos dessa classe te ajudam muito.
Não vejo nenhuma vantagem em se utilizar String, apenas mais trabalho!

Oi fabiocortolan,

Brigadão por estar ajudando.

Mas então, e se o sistema usar as datas apenas para pegar a data atual e definir valores de datas digitados pelo usuário, sem nenhuma necessidade (mesmo que futura) de fazer cálculos com elas?

O que estou tendo mais dificuldade é inserir valores com data / hora em campos datetime em banco de dados - usando MS SQL Server no momento.

Eu aconselho vc usar a API joda-time ela tem todos os métodos já implementados para trabalhar com datas…

assim como o Resplandes, aconselho vc a usar o Joda-Time, que facilita mto operações com data/hora.

Não posso opinar a respeito do Joda-time pois nunca utilizei, mas eu nunca tive nenhum problema utilizando Calendar, java.util.Date no java, e timestamp no banco.

se java.util.Date para os atributos
e manipule com a lib do joda-time

caso for mapear no banco, apenas faça @Temporal(TemporalType.TIMESTAMP) com JPA

Os atributos devem ser do tipo Date (eca!). O Calendar (mais eco ainda!) é para as manipulações de datas. Se puder, use o joda-time para as manipulações, que é bem mais tranquilo de trabalhar.

Infelizmente. a melhor forma de se trabalhar com datas no Java é não usar a API do Java pra isso…

Isso até o Java 8, depois disso a API de data ficará igual ao joda-time :slight_smile:

http://www.developerscrappad.com/228/java/java-ee/ejb3-jpa-dealing-with-date-time-and-timestamp/

Esse é um artigo legal pra você ler e decidir…

Eu prefiro usar Calendar sempre… Mas cada caso é um caso…

Isso até o Java 8, depois disso a API de data ficará igual ao joda-time :)[/quote]

Espero muito que seja verdade… é tão chato usar APIs de terceiros pra fazer algo que a linguagem deveria prover. Podiam colocar RegExps nativas também no pacote de melhorias (mas aí já é assunto pra outro tópico).