LocalDateTime是jdk8时间类API,与Date不同的是,LocalDateTime更为强大可以设置时区Zone和时差ZoneOffset。
类似比较如下:
- Instant类似于Date
- LocalDateTime 类似于Calendar
- DateTimeFormatter类似于SimpleDateFormat
一、Date与LocalDateTime之间的转换
Date <--------> Instant <-------> ZonedDateTime <-------> LocalDateTime
从转换流程可以看出,Instant和ZonedDateTime更像是一个转换器.
二、Date 转 LocalDateTime代码:
Date date = new Date();
DateTimeFormatter formatter = new DateTimeFormatterBuilder()
.appendPattern("yyyy-MM-dd")
.toFormatter();
LocalDateTime localDateTime = date.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime();
String st = localDateTime.format(formatter);
System.out.println(st);
输出结果 : 2021-09-04
三、LocalDateTime 转 Date 代码
LocalDateTime localDateTime = LocalDateTime.now();
Instant instant = localDateTime.atZone(ZoneId.systemDefault())
.toInstant();
Date date = new Date(instant.toEpochMilli());
System.out.println(date);
输出结果:Sat Sep 04 21:30:00 CST 2021