Converter de java.util.date em JodaTime


249

Eu quero converter um java.util.Datede JodaTimemodo a realizar subtrações entre as datas. Existe uma boa maneira concisa de converter de Datepara JodaTime?

Respostas:


478
java.util.Date date = ...
DateTime dateTime = new DateTime(date);

Certifique-se de que datenão nullseja, caso contrário, ele age como new DateTime()- eu realmente não gosto disso.


9
Então, basicamente: #DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx

121
+1 em "caso contrário, ele funciona como o novo DateTime () - eu realmente não gosto disso".
reevesy

1
@BabajidePrince Não; você obteria o mesmo valor que o novo DateTime (null), que é exatamente o que queremos evitar. A expressão pretende manter nulo como nulo, o que faz sentido na maioria das situações.
Joeri Hendrickx

4
Esteja ciente de que o Java Date é independente do fuso horário, enquanto o Joda DateTime possui uma cronologia.
Cristian Vrabie

1
Sim, uma ou duas vezes ao se nulo o ato como novo DateTime () é me causou um pouco de anoyingness ...
buzzsawddog

13

http://joda-time.sourceforge.net/quickstart.html

Cada classe datetime fornece uma variedade de construtores. Isso inclui o construtor Object. Isso permite criar, por exemplo, DateTime a partir dos seguintes objetos:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class

16
@skaffman, se você quiser evitar datas nulas, use date.getTime (). Você estaria recebendo uma exceção de ponteiro nulo, no entanto, isso pode ser melhor do que falhar silenciosamente.
Heathen

2
Eu me pergunto por que eles não sobrecarregaram apenas o construtor desses objetos.
Pieter De Bie

1
@PieterDeBie - porque o sistema é genérico. Você pode registrar seus próprios tipos de objetos para ter uma conversão de ou para.
Jules
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.