Convertir de java.util.date en JodaTime

249

Je veux convertir un java.util.Dateà JodaTimeafin d'effectuer des soustractions entre les dates. Existe-t-il un bon moyen concis de convertir de Dateà JodaTime?

Krt_Malta
la source

Réponses:

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

Assurez-vous que ce daten'est pas le nullcas, sinon, cela agit comme new DateTime()- je n'aime vraiment pas ça.

skaffman
la source
9
Donc en gros:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx
121
+1 pour "sinon il agit comme un nouveau DateTime () - je n'aime vraiment pas ça."
reevesy
1
@BabajidePrince No; vous obtiendrez alors la même valeur que new DateTime (null), ce qui est exactement ce que nous voulions éviter. L'expression est destinée à maintenir null comme null, ce qui est logique dans la plupart des situations.
Joeri Hendrickx
4
Sachez que Java Date est indépendant de TimeZone tandis que Joda DateTime a une chronologie.
Cristian Vrabie
1
Oui, une heure ou deux, l'acte si nul comme le nouveau DateTime () me cause un peu de gêne ...
buzzsawddog
13

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

Chaque classe datetime fournit une variété de constructeurs. Il s'agit notamment du constructeur d'objet. Cela vous permet de construire, par exemple, DateTime à partir des objets suivants:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class
Païen
la source
16
@skaffman si vous voulez éviter les dates nulles, vous pouvez utiliser date.getTime () à la place. Vous obtiendriez une exception de pointeur nul mais cela pourrait être mieux que d'échouer silencieusement.
Heathen
2
Je me demande pourquoi ils n'ont pas simplement surchargé leur constructeur pour ces objets.
Pieter De Bie
1
@PieterDeBie - parce que le système est générique. Vous pouvez enregistrer vos propres types d'objet pour effectuer une conversion vers ou depuis.
Jules