2015-10-13 61 views
7

我試圖將java.time.LocalTime對象轉換爲java.util.Date,但找不到任何合適的方法。什麼是正確的方法來做到這一點?將LocalTime(Java 8)轉換爲日期

是否有任何理由爲什麼Java似乎沒有內置的直接轉換方法?

對可能的重複:
How to convert joda time - 不適合我,可能我錯過了一些「joda」庫?
How to convert Date to LocalTime? - 這反過來轉換轉換。

+0

可能重複[如何將Joda時間LocalTime轉換爲java.util.Date?](http://stackoverflow.com/questions/15543031/how-to-convert-joda-time-localtime-to-java- util-date) – thegauravmahawar

+0

[Convert java.util.Date to java.time.LocalDate]可能的重複(http://stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate ) – Phantomazi

回答

11

本地時間其實並不能轉換爲日期,因爲它只含有的DateTime的時間一部分。像11:00。但是沒有一天是已知的。您必須手動爲它供給:

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

這裏有一個博客帖子新和舊的API之間這explains all the conversions

沒有簡單的內置轉換方法,因爲這些API以完全不同的方式處理日期和時間的想法。

+0

謝謝!但是我很困惑你的LocalTime聲明。 'LocalTime lt = ...'是什麼意思? – Jbartmann

+1

這意味着您應該手動創建對象或從某處獲取對象。這不是Java,如果這就是你要求的。 – Dariusz

+1

Dariusz意味着你必須提供四件事來使用他的代碼:一個LocalTime對象,一年的整數,一個月的整數,以及一天的整數。另外,根據你想要的這個日期時間的位置,用特定的ZoneId替換'ZoneId.systemDefault'。 12月3日12:30在巴黎比在蒙特利爾早。 –

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

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