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?

Krt_Malta
fonte

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.

skaffman
fonte
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
Pagão
fonte
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