Java8 LocalDate、Date、LocalDateTime、时间戳的转换

271 阅读1分钟

参考文档:www.yinzhongnet.com/1103.html

1、时间戳转换为LocalDate、LocalDateTime

longtimestamp = System.currentTimeMillis();
LocalDate localDate = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDate();
LocalDateTime localDateTime = Instant.ofEpochMilli(timestamp).atZone(ZoneOffset.ofHours(8)).toLocalDateTime();

Instant:常被用来记录应用程序中事件的时间戳,可以精确到纳秒级别

2、LocalDateTime转时间戳

LocalDateTime localDateTime = LocalDateTime.now();
longtimestamp = localDateTime.toInstant(ZoneOffset.ofHours(8)).toEpochMilli();

3、LocalDate转时间戳

LocalDate localDate = LocalDate.now();
longtimestamp = localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant().toEpochMilli();

atStartOfDay()方法用于通过将此日期与午夜时间合并在此LocalDate的开始处创建LocalDateTime。

4、LocalDate转Date

LocalDate nowLocalDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneOffset.ofHours(8)).toInstant());

image.png

5、LocalDateTime转Date

LocalDateTime localDateTime = LocalDateTime.now();
Date date = Date.from(localDateTime.atZone(ZoneOffset.ofHours(8)).toInstant());

image.png

6、Date转LocalDateTime、LocalDate

Date date =new Date();
LocalDateTime localDateTime = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
LocalDate localDate = date.toInstant().atZone(ZoneOffset.ofHours(8)).toLocalDate();

Instant 这个类起到非常重要的作用