具体思路都是通过Instant当中介,然后通过Instant来创建LocalDateTime
新的日期类转旧的也是如此,将新的先转成LocalDateTime,然后获取Instant,接着转成Date
/**
* Date类型转LocalDateTime类型
* java.util.Date --> java.time.LocalDateTime
* @param date java.util.Date时间类型
* @return java.time.LocalDateTime时间类型
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
Instant instant = date.toInstant();
return LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
}
/**
* Date类型转LocalDate类型
* java.util.Date --> java.time.LocalDate
* @param date java.util.Date时间类型
* @return java.time.LocalDate时间类型
*/
public static LocalDate dateToLocalDate(Date date) {
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
return localDateTime.toLocalDate();
}
/**
* Date类型转LocalTime类型
* java.util.Date --> java.time.LocalTime
* @param date java.util.Date时间类型
* @return java.time.LocalTime时间类型
*/
public static LocalTime dateToLocalTime(Date date) {
Instant instant = date.toInstant();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault());
return localDateTime.toLocalTime();
}
/**
* LocalDateTime类型转Date类型
* java.time.LocalDateTime --> java.util.Date
* @param localDateTime LocalDateTime类型
* @return Date类型
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
/**
* LocalDate类型转Date类型
* java.time.LocalDate --> java.util.Date
* @param localDate LocalDate类型
* @return Date类型
*/
public static Date localDateToDate(LocalDate localDate) {
LocalDateTime localDateTime = localDate.atStartOfDay();
return localDateTimeToDate(localDateTime);
}
/**
* LocalTime类型转Date类型
* java.time.LocalTime --> java.util.Date
* @param localTime LocalTime类型
* @return Date类型
*/
public static Date localTimeToDate(LocalTime localTime) {
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
return localDateTimeToDate(localDateTime);
}