我使用java8 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());
我看到了答案 新的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
我迷失了
答案 0 :(得分:2)
使用:
public LocalDate dateToLocalDate(final Date date)
{
return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault())
.toLocalDate();
}
但是,如上所述,此时没有时区信息。
javadoc说这个方法:
从Instant和区域ID中获取LocalDateTime的实例。
这将根据指定的时刻创建本地日期时间。首先,使用区域ID和瞬间获得UTC /格林威治的偏移量,这很简单,因为每个瞬间只有一个有效偏移量。然后,使用instant和offset来计算本地日期时间。
答案 1 :(得分:0)
您也可以将您的时区传递为 -
LocalDateTime localDateTime = LocalDateTime.from(new Date().toInstant().atZone(ZoneId.of("UTC")));