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?

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.


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.