Date与LocalDateTime互相转换

DateLocalDateTime之间的互相转换需要借助InstantInstant是时间线上的一个瞬时点,不包含时区信息

一、Date转LocalDateTime

转换顺序:

  • Date转为Instant
  • Instant转为LocalDateTime或者LocalDate
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Date date = new Date();                                                                

// 先转为Instant
Instant instant = date.toInstant();

LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();

LocalDateTime localDateTime = instant.atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours

LocalDateTime localDateTime = instant.atZone(ZoneId.ofOffset("UTC", ZoneOffset.ofHours

LocalDateTime localDateTime = instant.atZone(ZoneOffset.of("+8")).toLocalDateTime();

LocalDateTime localDateTime = instant.atZone(ZoneOffset.of("-8")).toLocalDateTime();

二、LocalDateTime转Date

转换顺序:

  • LocleDateTie转为Instant
  • Instant转为Date
1
2
3
4
5
6
LocalDateTime now = LocalDateTime.now();     

// 此处的转换方式和Date转LocalDateTime相同
Instant instant = now.toInstant(ZoneOffset.of("+7"));

Date date = Date.from(instant)

Instant转换的时候指定目标时区信息方式:

  • ZoneId.ofOffset("UTC", ZoneOffset.ofHours(5)) 基于UTC进行小时偏移
  • ZoneId.ofOffset("UTC", ZoneOffset.ofHoursMinutes(6, 5))基于UTC进行小时和分钟偏移
  • ZoneId.systemDefault()基于当前所在系统进行偏移
  • ZoneOffset.of("+8")直接指定偏移,支持+-时间前后偏移

Date与LocalDateTime互相转换
https://probiecoder.cn/java/date_localdatetime.html
作者
duwei
发布于
2025年4月22日
许可协议