簡體   English   中英

如何使用 java.util.Date 的(值)設置 java.time.LocalDate?

[英]How to set java.time.LocalDate using (the value of) an java.util.Date?

我使用 Java 8 DatePicker(我喜歡它)。

這個類使用java.time.LocalDate 另一方面, Persistence使用(僅在 2014 年 3 月) java.util.Date LocalDate2Date涉及但可行(見下文),但我找不到做 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());

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

最新的努力是via java.time.Instant進行“轉換” 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

我迷路了

用:

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

但是,如前所述,這不再有時區信息。

javadoc 說這個方法:

從 Instant 和區域 ID 獲取 LocalDateTime 的實例。

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

您還可以傳入您的時區作為 -

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM