增加 LocalDateTime、LocalDate 2 Date 互转工具类

This commit is contained in:
duandazhi 2021-03-16 22:12:44 +08:00
parent c99ccc4db6
commit 426396633f

View File

@ -0,0 +1,95 @@
package cn.hutool.core.date;
import java.time.*;
import java.util.Date;
/**
* LocalDate和Date的互换
* <p>
* java.sql.Datejava.sql.Timestampjava.util.Date这些类都不好用很多方法都过时了
* Java8里面新出来了一些APILocalDateLocalTimeLocalDateTime 非常好用
* 如果想要在JDBC中使用Java8的日期LocalDateLocalDateTime则必须要求数据库驱动的版本不能低于4.2
*
* @author dazer
* @date 2018/2/8 下午2:31
* @see DateUtil
*/
public class DateUtils8Transform {
private DateUtils8Transform() {
}
/**
* 01. java.util.Date --> java.time.LocalDateTime
*/
public static LocalDateTime date2Java8DateTime(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zone);
}
/**
* 02. java.util.Date --> java.time.LocalDate
*/
public static LocalDate date2Java8Date(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
return localDateTime.toLocalDate();
}
/**
* 03. java.util.Date --> java.time.LocalTime
*/
public static LocalTime date2Java8Time(Date date) {
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone);
return localDateTime.toLocalTime();
}
/**
* 04. java.time.LocalDateTime --> java.util.Date
*/
public static Date java8Date2Date(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return Date.from(instant);
}
/**
* 05. java.time.LocalDate --> java.util.Date
*/
public static Date java8Date2Date(LocalDate localDate) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDate.atStartOfDay().atZone(zone).toInstant();
return Date.from(instant);
}
/**
* 06. java.time.LocalTime --> java.util.Date
*/
public static Date java8Date2Date(LocalTime localTime) {
LocalDate localDate = LocalDate.now();
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime);
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return Date.from(instant);
}
/**
* java.sql.Date与java.util.Date的转化
*
* @param sqlDate
* @return
*/
public static Date sqlDate2Date(java.sql.Date sqlDate) {
return new Date(sqlDate.getTime());
}
public static Date date2SqlDate(Date date) {
return new java.sql.Date(new Date().getTime());
}
}