2014-03-19 19 views
1

我使用java8 DatePicker(我喜歡它)。java8;如何設置java.time.LocalDate使用(的值)一個java.util.Date

本課程使用java.time.LocalDatePersistence另一方面使用(僅在2014年3月)java.util.DateLocalDate2Date涉及但可行(見下文) 但我找不到一種方法來做Date2LocalDate。

.... 
entityClassFromDatabase.setDate2b(LocalDate2Date(datepicker.getvalue())); 
.... 
} 

private java.util.Date LocalDate2Date(LocalDate localDate) { 
    [validation code omitted] 
    ChronoLocalDateTime cldt = localDate.atStartofDay(); 
    Instant instant = cldt.toInstant(ZoneOffset.from(Instant.now().atZone(ZoneId.systemDefault()))); 
    return Date.from.(instant); 
} 

我需要的是類似的東西;

datepicker.setvalue(Date2LocalDate(entityClassFromDatabase.getDate2b()); 

我看到了答案,建議 新的LocalDate(日期); 和變體,但這些不起作用;

最新努力是「轉化」 via java.time.Instant但儘管LocalDate2Date打印出相同的即時使用的「即時」下面使用:

Instant instant = entityClassFromDatabase.getDate2b.toinstant(); 
LocalDateTime xx = LocalDateTime.from(instant); 

拋出下面的異常:

java.time.DateTimeException: Unable to obtain LocalDateTime from TemporalAccessor: 2014-03-27T23:00:00Z of type java.time.Instant 

我丟失

+1

:// stackoverflow.com/questions/21242110/convert-java-util-date-to-java-time-localdate)。 –

+2

請學習Java命名約定(方法應始終以小寫字母開頭)。 – ryvantage

回答

2

使用:

public LocalDate dateToLocalDate(final Date date) 
{ 
    return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault()) 
     .toLocalDate(); 
} 

但是,如前所述,這沒有時區信息了。

的Javadoc說,關於這個方法:

從即時和區域ID獲取LocalDateTime的一個實例。

這會根據指定的時刻創建本地日期時間。首先,使用區域ID和瞬間獲得與UTC /格林威治的偏移量,這很簡單,因爲每個瞬間只有一個有效偏移量。然後,瞬時和偏移量用於計算本地日期時間。

+0

我認爲OP想要反向轉換,或者我誤解了任何東西? –

+0

那麼,OP說「LocalDate2Date參與但可行(見下文),但我找不到一種方法來做Date2LocalDate。」 – fge

+0

好吧,然後我的閱讀錯誤,英文我沒有這麼多的安全理由,對不起。將刪除我的答案。 –

0

您也可以通過在你的時區爲 -

LocalDateTime localDateTime = LocalDateTime.from(new Date().toInstant().atZone(ZoneId.of("UTC")));

如果你看從java.util.Date轉換到隨後LOCALDATE看看這個[SO-項目(HTTP
相關問題