常用对象
ZoneId: 时区ID,用来确定Instant和LocalDateTime互相转换的规则
Instant: 用来表示时间线上的一个点(瞬时)
LocalDate: 表示没有时区的日期, LocalDate是不可变并且线程安全的
LocalTime: 表示没有时区的时间, LocalTime是不可变并且线程安全的
LocalDateTime: 表示没有时区的日期时间, LocalDateTime是不可变并且线程安全的
工具类
import java.text.DateFormat;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Date;
/*
* @creator wangli66
* @create-time 20:05 2019/12/19
**/
public class DateTimeUtils {
// 时区
private static String zoneId = "Asia/Shanghai";
// 日期格式
private static String dateFormat = "yyyy-MM-dd HH:mm:ss";
/*
* @Description: 传日期字符串返回日期
* @param: [dateTime]
* @return: java.time.LocalDateTime
* @Date: 2019/12/19
*/
public static LocalDateTime stringToDate(String dateTime) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateFormat);
LocalDateTime localDateTime = LocalDateTime.parse(dateTime, dateTimeFormatter);
return localDateTime;
}
/*
* @Description: 传日期格式化为字符串
* @param: [localDateTime]
* @return: java.lang.String
* @Date: 2019/12/19
*/
public static String dateToString(LocalDateTime localDateTime) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(dateFormat);
String format = dateTimeFormatter.format(localDateTime);
return format;
}
/*
* @Description: date转换为localdatetime
* @param: [date]
* @return: java.time.LocalDateTime
* @Date: 2019/12/20
*/
public static LocalDateTime dateToLocalDateTime(Date date) {
Instant instant = date.toInstant();
ZoneId zoneId = ZoneId.systemDefault();
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zoneId);
return localDateTime;
}
/*
* @Description: localDateTime转换为Date
* @param: [localDateTime]
* @return: java.util.Date
* @Date: 2019/12/20
*/
public static Date localDateTimeToDate(LocalDateTime localDateTime) {
Instant instant = localDateTime.atZone(ZoneId.systemDefault()).toInstant();
return Date.from(instant);
}
/*
* @Description: 毫秒数转换为localdatetime
* @param: [time]
* @return: java.time.LocalDateTime
* @Date: 2019/12/20
*/
public static LocalDateTime longToLocalDateTime(long time) {
return LocalDateTime.ofInstant(Instant.ofEpochMilli(time), ZoneId.systemDefault());
}
/*
* @Description: localdatetime转换为毫秒数
* @param: [ldt]
* @return: long
* @Date: 2019/12/20
*/
public static long localDateTimeToLong(LocalDateTime ldt) {
return ldt.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
}
public static void main(String[] args) {
LocalDateTime localDateTime = DateTimeUtils.stringToDate("2019-12-19 20:23:54");
System.out.println("字符串转换时间:" + localDateTime);
String date = DateTimeUtils.dateToString(LocalDateTime.now());
System.out.println("时间转换字符串:" + date);
LocalDateTime localDateTime1 = DateTimeUtils.dateToLocalDateTime(new Date());
System.out.println("Date转换LocalDateTime:" + localDateTime1);
Date date1 = DateTimeUtils.localDateTimeToDate(LocalDateTime.now());
System.out.println("LocalDateTime转换Date:" + date1);
LocalDateTime localDateTime2 = DateTimeUtils.longToLocalDateTime(System.currentTimeMillis());
System.out.println("毫秒转换LocalDateTime:" + localDateTime2);
long mills = DateTimeUtils.localDateTimeToLong(LocalDateTime.now());
System.out.println("LocalDateTime转换毫秒:" + mills);
}
}
测试结果