将java.util.Date对象转换为新的JDK 8/JSR-310 java.time.LocalDate的最佳方法是什么?
Date input = new Date();
LocalDate date = ???
将java.util.Date对象转换为新的JDK 8/JSR-310 java.time.LocalDate的最佳方法是什么?
Date input = new Date();
LocalDate date = ???
当前回答
为了简化将LocalDate/time转换为Date的过程,反之亦然,我创建了两个图表:
将LocalDate转换为Date,反之亦然:
将LocalDateTime转换为Date,反之亦然:
其他回答
LocalDate localDate = LocalDate.parse( new SimpleDateFormat("yyyy-MM-dd").format(date) );
首先,将日期转换为即时很容易
Instant timestamp = new Date().toInstant();
然后,你可以在jdk 8中使用ofInstant()方法将Instant转换为任何日期api:
LocalDateTime date = LocalDateTime.ofInstant(timestamp, ZoneId.systemDefault());
我在JBoss EAP 6上的@JodaStephen的实现有问题。因此,我按照http://docs.oracle.com/javase/tutorial/datetime/iso/legacy.html中的Oracle Java教程重写了转换。
Date input = new Date();
GregorianCalendar gregorianCalendar = (GregorianCalendar) Calendar.getInstance();
gregorianCalendar.setTime(input);
ZonedDateTime zonedDateTime = gregorianCalendar.toZonedDateTime();
zonedDateTime.toLocalDate();
这条简单的线有什么问题?
new LocalDateTime(new Date().getTime()).toLocalDate();
为了简化将LocalDate/time转换为Date的过程,反之亦然,我创建了两个图表:
将LocalDate转换为Date,反之亦然:
将LocalDateTime转换为Date,反之亦然: