Melhor forma de trabalhar com data/hora no Java

10 respostas
ERVER

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.

10 Respostas

fabiocortolan

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!

ERVER

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.

Resplandes

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

bobmatta

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

fabiocortolan

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.

igor_ks

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

Ataxexe

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…

igor_ks

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

marciorodr0

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…

Ataxexe

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

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

Criado 17 de maio de 2013
Ultima resposta 17 de mai. de 2013
Respostas 10
Participantes 7