Convierte de java.util.date a JodaTime

249

Quiero convertir un java.util.Datea JodaTimepara realizar sustracciones entre fechas. ¿Hay una buena forma concisa de convertir de Datea JodaTime?

Krt_Malta
fuente

Respuestas:

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

Sin embargo, asegúrese de dateque no sea así null, de lo contrario, actúa como new DateTime()si realmente no me gustara.

skaffman
fuente
99
Básicamente:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx
121
+1 para "de lo contrario, actúa como un nuevo DateTime () - Realmente no me gusta eso".
reevesy
1
@BabajidePrince No; entonces obtendría el mismo valor que el nuevo DateTime (nulo), que es exactamente lo que queríamos evitar. La expresión está destinada a mantener nulo como nulo, que es lo que tiene sentido en la mayoría de las situaciones.
Joeri Hendrickx
44
Tenga en cuenta que Java Date es independiente de TimeZone, mientras que Joda DateTime tiene una cronología.
Cristian Vrabie
1
Sí, una o dos veces al nula si actúan como nuevo DateTime () se me causó un poco de anoyingness ...
buzzsawddog
13

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

Cada clase de fecha y hora proporciona una variedad de constructores. Estos incluyen el constructor de objetos. Esto le permite construir, por ejemplo, DateTime a partir de los siguientes objetos:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
Pagano
fuente
16
@skaffman si desea evitar fechas nulas, puede usar date.getTime () en su lugar. Sin embargo, obtendrá una excepción de puntero nulo que puede ser mejor que fallar silenciosamente.
Heathen
2
Me pregunto por qué no solo sobrecargaron su constructor para esos objetos.
Pieter De Bie
1
@PieterDeBie: porque el sistema es genérico. Puede registrar sus propios tipos de objeto para tener conversión hacia o desde.
Julio