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.