2015-10-13 14 views
7

Próbuję przekonwertować obiekt java.time.LocalTime na java.util.Date, ale nie mogę znaleźć żadnej odpowiedniej metody. Jaki jest właściwy sposób na zrobienie tego?Konwertuj LocalTime (Java 8) na datę

Czy jest jakikolwiek powód, dla którego java nie jest dostarczana z wbudowaną metodą bezpośredniej konwersji?

Możliwe duplikaty:
How to convert joda time - Nie działa dla mnie, prawdopodobnie brakuje mi niektórych bibliotek "jody"?
How to convert Date to LocalTime? - To odnosi się do nawrócenia na odwrót.

+0

Prawdopodobny duplikat [Jak przekształcić Joda czas LocalTime na java.util.Date?](http://stackoverflow.com/questions/15543031/how-to-convert-joda-time-localtime-to-java- util-date) – thegauravmahawar

+0

Prawdopodobny duplikat [Convert java.util.Date na java.time.LocalDate] (http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate) – Phantomazi

Odpowiedz

11

Localtime faktycznie nie mogą być konwertowane do daty, ponieważ zawiera tylko czasu część DateTime. Jak 11:00. Ale żaden dzień nie jest znany. Trzeba go dostarczyć ręcznie:

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

Oto blogu który explains all the conversions między nowym i starym API.

Nie ma prostej wbudowanej metody konwersji, ponieważ te interfejsy API podchodzą do idei daty i godziny w zupełnie inny sposób.

+0

Dzięki! Ale jestem zdezorientowany Twoją deklaracją LocalTime. Co dokładnie oznacza 'LocalTime lt = ...? – Jbartmann

+1

Oznacza to, że należy ręcznie utworzyć obiekt lub pobrać go skądś. To nie jest Java, jeśli o to pytasz. – Dariusz

+1

Dariusz oznacza, że ​​musisz podać cztery rzeczy do użycia swojego kodu: obiekt LocalTime, liczbę całkowitą dla roku, liczbę całkowitą dla miesiąca i liczbę całkowitą dla danego dnia. Również zamień 'ZoneId.systemDefault' na specyficzny identyfikator ZoneId, w zależności od tego, gdzie zamierzasz tę datę-czas. 12:30 w dniu 3 grudnia pojawia się wcześniej w Paryżu niż na przykład w Montrealu. –