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?

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.


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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.