2013-03-11 13 views

risposta

83

Per convertire Java Date a Joda DateTime: -

Date date = new Date(); 
DateTime dateTime = new DateTime(date); 

E viceversa: -

Date dateNew = dateTime.toDate(); 

Con TimeZone, se necessario: -

DateTime dateTimeNew = new DateTime(date.getTime(), timeZone); 
Date dateTimeZone = dateTime.toDateTimeAtStartOfDay(timeZone).toDate(); 
+5

La tua conversione in 'DateTime' usa il fuso orario predefinito del sistema - dovresti dirlo esplicitamente. E la conversione che * fa * utilizza un fuso orario prende l'inizio del giorno, che è una scelta dispari IMO. Un 'DateTime' già * conosce * il fuso orario, quindi è strano volerlo cambiare - ha molto più senso specificare la zona quando si converte * da *' Date' * a * 'DateTime'. –

+2

Grazie a tutti voi – Time

+0

'java.utiL.La data' non conosce in realtà un 'java.util.TimeZone'. Quindi devi avere il 'TimeZone' in una variabile separata se ne hai bisogno, in questo modo:' TimeZone zone = dateTime.getZone() .TimeZone(); ' – bowmore

0

convertire da Java Data a Joda Data di scadenza:
Per convertire da Data a Data. È necessario specificare il fuso orario.
Per convertire da java.util Date a Joda Time of Date è sufficiente passare la data e il fuso orario java.util al costruttore di Joda Time of Date.

java.util.Date date = new java.util.Date(System.currentTimeMillis()); 
DateTimeZone dtz = DateTimeZone.getDefault();// Gets the default time zone. 
DateTime dateTime = new DateTime(date.getTime(), dtz); 

convertire da Joda Time of Data a Java Data:
Per il caso inverso Joda DateTime ha un metodo toDate() che restituirà la Data di java.util.

DateTime jodaDate = new DateTime(); 
java.util.Date date = jodaDate.toDate(); 

Per maggiori dettagli Visit Here

6

Non hai specificato quale tipo all'interno Joda Tempo che ti interessa, ma:

Instant instant = ...; 
Date date = instant.toDate(); 
instant = new Instant(date); 
// Or... 
instant = new Instant(date.getTime()); 

DateInstant sono legati al fuso orario, quindi non c'è bisogno di specificarne uno qui.

Essa non ha senso convertire da LocalDateTime/LocalDate/LocalTime a Date (o viceversa) in quanto ciò dipende dal fuso essendo applicato.

Con DateTime è possibile convertire - un Date senza specificare il fuso orario, ma convertire da Date a DateTime è necessario specificare il fuso orario, o verrà utilizzato il fuso orario di default del sistema. (Se davvero volete che, mi piacerebbe specificarlo in modo esplicito per far capire che si tratta di una scelta deliberata.)

Ad esempio:

DateTimeZone zone = DateTimeZone.forID("Europe/London"); 
Date date = ...; 
DateTime dateTime = new DateTime(date.getTime(), zone); 
+0

' LocalTime' aiuta davvero a semplificare il codice quando interagisci con 'java.util.Date' e quando si eseguono i test. Grazie. –

Problemi correlati