Convertire da java.util.date a JodaTime


249

Voglio convertire un in java.util.Datein JodaTimemodo da effettuare sottrazioni tra le date. C'è un buon modo conciso per convertire da Datea JodaTime?

Risposte:


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

Assicurati che datenon lo sia null, tuttavia, altrimenti si comporta come new DateTime()- non mi piace davvero .


9
Quindi in sostanza:DateTime dateTime = date==null?null:new DateTime(date);
Joeri Hendrickx, il

121
+1 per "altrimenti si comporta come un nuovo DateTime () - non mi piace davvero."
rivisitazione del

1
@BabajidePrince No; allora otterrai lo stesso valore di new DateTime (null), che è esattamente ciò che volevamo evitare. L'espressione intende mantenere null come null, che è ciò che ha senso nella maggior parte delle situazioni.
Joeri Hendrickx,

4
Tenere presente che Java Date è indipendente da TimeZone mentre Joda DateTime ha una cronologia.
Cristian Vrabie,

1
Sì, una volta o due il if null agiscono come il nuovo DateTime () mi ha causato un po 'di ansia ...
buzzsawddog

13

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

Ogni classe datetime offre una varietà di costruttori. Questi includono il costruttore Object. Ciò consente di creare, ad esempio, DateTime dai seguenti oggetti:

* Date - a JDK instant
* Calendar - a JDK calendar
* String - in ISO8601 format
* Long - in milliseconds
* any Joda-Time datetime class

16
@skaffman se vuoi evitare date nulle puoi usare invece date.getTime (). Si otterrebbe un'eccezione puntatore null, tuttavia, che potrebbe essere meglio di un errore silenzioso.
Heathen,

2
Mi chiedo perché non abbiano semplicemente sovraccaricato il loro costruttore per quegli oggetti.
Pieter De Bie,

1
@PieterDeBie - perché il sistema è generico. È possibile registrare i propri tipi di oggetto per la conversione da o verso.
Jules il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.