Estou criando um sistema baseado na Web que será usado em países de todo o mundo. Um tipo de dados que deve ser armazenado são datas e horas.
Quais são os prós e os contras de usar as classes de data e hora do Java em comparação com bibliotecas de terceiros, como a hora do Joda ? Acho que essas bibliotecas de terceiros existem por um bom motivo, mas eu nunca as comparei realmente.
Respostas:
EDIT: Agora que o Java 8 foi lançado, se você puder usá-lo, faça-o!
java.time
é ainda mais limpo que o Joda Time, na minha opinião. No entanto, se você está preso antes do Java-8, continue lendo ...Max pediu os prós e contras do uso de Joda ...
Prós:
java.time
do Java 8, pois eles são pelo menos um pouco semelhantesContras:
DateTimeZoneBuilder
efetivamente no passado. Este é um caso de uso muito raro.Para responder à idéia de oxbow_lakes de criar efetivamente sua própria API pequena, aqui estão minhas opiniões sobre por que essa é uma péssima idéia:
fonte
java.time.*
para Java 6 e 7: threeten.org/threetenbpBem, a menos que você pretenda esperar pelo Java 8, esperando que eles implementem uma API melhor para manipular data e hora, sim, por favor, use o Joda-Time . Está economizando tempo e evita muitas dores de cabeça.
fonte
A resposta é: depende
JODA (e JSR-310) é uma biblioteca de data / hora totalmente funcional, incluindo suporte para uso com vários sistemas de calendário.
Pessoalmente, achei o JODA um passo longe demais em termos de complexidade para o que eu precisava. Os 2 erros principais (IMHO) no java
Date
e nasCalendar
classes padrão são:Embora esses tópicos sejam abordados pelo JODA, você achará muito fácil rolar suas próprias classes para
YearMonthDay
eInstant
, que usam as classes java sob o capô para cálculos "calendricais" reais. Então você não precisa se familiarizar com uma API de> 100 classes, um mecanismo de formatação / análise diferente etc.Obviamente, se você precisa de uma representação completa de cronologias diferentes (por exemplo, hebraico) ou deseja poder definir seu próprio sistema imaginário de calendário (por exemplo, para um jogo que está escrevendo), talvez JODA ou JRS-310 seja para você. Se não, então eu sugeriria que rolar o seu próprio é possivelmente o caminho a percorrer.
O líder de especificação do JSR-310 é Stephen Colebourne, que escreveu o JODA em primeiro lugar, portanto substituirá logicamente o JODA.
fonte
Tudo depende do que você está fazendo com as datas. Se você simplesmente persistir com eles, o Datas integradas do Java provavelmente fará tudo o que você deseja. No entanto, se você estiver manipulando extensivamente a data e hora, provavelmente estará melhor com Joda.
fonte
Você deve usar uma biblioteca Joda-Time, porque:
data.
Exception in thread "main" org.joda.time.IllegalFieldValueException: Cannot parse "2014-02-31": Value 31 for dayOfMonth must be in the range [1,28].
Você pode gostar desta página para obter mais detalhes: http://swcodes.blogspot.com/
fonte