2015-10-13 16 views
7

Sto tentando di convertire un oggetto java.time.LocalTime in java.util.Date ma non riesco a trovare alcun metodo adatto. Qual è il modo corretto per farlo?Converti LocalTime (Java 8) alla data

C'è qualche motivo per cui java non sembra essere spedito con un metodo di conversione diretta incorporato?

A possibili duplicati:
How to convert joda time - Non funziona per me, probabilmente mi mancano alcune librerie "joda"?
How to convert Date to LocalTime? - Questo indirizza la conversione al contrario.

+0

Possibile duplicato di [Come convertire Joda time LocalTime in java.util.Date?](http://stackoverflow.com/questions/15543031/how-to-convert-joda-time-localtime-to-java- util-date) – thegauravmahawar

+0

Possibile duplicato di [Converti java.util.Date in java.time.LocalDate] (http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate) – Phantomazi

risposta

11

LocalTime in realtà non può essere convertito in una data, perché contiene solo il tempo parte di DateTime. Come alle 11:00 Ma nessun giorno è conosciuto. È necessario fornire manualmente:

LocalTime lt = ...; 
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). 
     atZone(ZoneId.systemDefault()).toInstant(); 
Date time = Date.from(instant); 

Ecco un post che explains all the conversions tra il nuovo e il vecchio API.

Non esiste un semplice metodo di conversione integrato, poiché queste API si avvicinano all'idea di data e ora in modo completamente diverso.

+0

Grazie! Ma sono confuso dalla dichiarazione LocalTime. Cosa significa "LocalTime lt = ..." esattamente? – Jbartmann

+1

Significa che dovresti creare manualmente l'oggetto o ottenerlo da qualche parte. Non è Java, se è quello che stai chiedendo. – Dariusz

+1

Dariusz significa che devi fornire quattro cose per usare il suo codice: un oggetto LocalTime, un intero per l'anno, un intero per il mese e un numero intero per il giorno. Inoltre, sostituisci "ZoneId.systemDefault' con uno ZoneId specifico a seconda di dove intendi questa data-ora. Le 12:30 del 3 dicembre arrivano prima a Parigi, ad esempio a Montreal. –

2
LocalTime lt = ...; 
Instant instant = lt.atDate(LocalDate.of(A_YEAR, A_MONTH, A_DAY)). 
     atZone(ZoneId.systemDefault()).toInstant(); 
Date time = Date.from(instant); 

Da: http://blog.progs.be/542/date-to-java-time