Java 8中 java.util.Date 类新增了两个方法,分别是from(Instant instant)和toInstant()方法
// Obtains an instance of Date from an Instant object.
// 03. java.util.Date --> java.time.LocalTime
// 04. java.time.LocalDateTime --> java.util.Date
// 05. java.time.LocalDate --> java.util.Date
// 06. java.time.LocalTime --> java.util.Date
// Obtains an instance of Date from an Instant object.
public static Date from(Instant instant) { try { return new Date(instant.toEpochMilli()); } catch (ArithmeticException ex) { throw new IllegalArgumentException(ex); } }// Converts this Date object to an Instant.
public Instant toInstant() { return Instant.ofEpochMilli(getTime()); }
这两个方法使我们可以方便的实现将旧的日期类转换为新的日期类,具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime(这个类可以很容易获取LocalDate和LocalTime),新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date,具体实现细节如下:
// 01. java.util.Date --> java.time.LocalDateTime
public void DateToLocalDateTime() {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
// LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
System.out.println(localDateTime);
}
public void DateToLocalDate() {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
// LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
LocalDate localDate = localDateTime.toLocalDate();
System.out.println(localDate);
}
// 03. java.util.Date --> java.time.LocalTime
public void DateToLocalTime() {
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
// LocalDateTime localDateTime = instant.atZone(zoneId).toLocalDateTime();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
LocalTime localTime = localDateTime.toLocalTime();
System.out.println(localTime);
}
// 04. java.time.LocalDateTime --> java.util.Date
public void LocalDateTimeToDate() {
LocalDateTime localDateTime = LocalDateTime.now();
ZoneId zoneId = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zoneId).toInstant();
Date date = Date.from(instant);
System.out.println(date);
}
// 05. java.time.LocalDate --> java.util.Date
public void LocalDateToDate() {
LocalDate localDate = LocalDate.now();
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
Date date = Date.from(instant);
System.out.println(date);
}
// 06. java.time.LocalTime --> java.util.Date
public void LocalTimeToDate() {
LocalTime localTime = LocalTime.now();
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
Date date = Date.from(instant);
System.out.println(date);
}