Java中Date类型与LocalDate或LocalDateTime相互转换
在 Java 中,Date 类型是表示日期和时间的类,而 LocalDate 和 LocalDateTime 是从 Java 8 开始引入的新日期时间 API 中的类。为了在不同的 API 之间进行转换,我们可以使用一些简单的方法。下面我们来详细介绍一下它们之间的相互转换。
Date类型转LocalDate或LocalDateTime类型
要将 Date 类型转换为 LocalDate 或 LocalDateTime 类型,我们可以使用 Instant 类来辅助完成转换。Instant 类是 Java 8 中引入的用于表示时间戳的类。
使用以下方法将 Date 类型转换为 LocalDate:1
2
3Date date = new Date();
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
使用以下方法将 Date 类型转换为 LocalDateTime:1
2
3Date date = new Date();
Instant instant = date.toInstant();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
示例 1:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class Tests {
public static void main(String[] args) {
Date date = new Date();
Instant instant = date.toInstant();
LocalDate localDate = instant.atZone(ZoneId.systemDefault()).toLocalDate();
LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime();
System.out.println(localDate);
System.out.println(localDateTime);
}
}
/*
此代码示例执行结果如下:
2022-11-20
2022-11-20T00:26:38.631
*/
LocalDate或LocalDateTime类型转Date类型
要将 LocalDate 或 LocalDateTime 类型转换为 Date 类型,我们可以使用 Date 类的 from() 方法。此方法将根据指定的时区和时间生成Date对象。
使用以下方法将 LocalDate 类型转换为 Date:1
2LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
使用以下方法将 LocalDateTime 类型转换为 Date:1
2LocalDateTime localDateTime = LocalDateTime.now();
Date date = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
示例 2:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
public class Tests2 {
public static void main(String[] args) {
LocalDate localDate = LocalDate.now();
Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInstant());
System.out.println(date);
LocalDateTime localDateTime = LocalDateTime.now();
Date date2 = Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
System.out.println(date2);
}
}
/*
此代码示例执行结果如下:
Sun Nov 20 00:00:00 CST 2022
Sun Nov 20 00:28:15 CST 2022
*/
请注意,上述两个代码示例中的ZoneId.systemDefault()
表示使用系统默认时区。您可以根据需要替换为相应的时区。
通过以上方法,你可以在 Java 中实现 Date 类型与 LocalDate 或 LocalDateTime 之间的相互转换。这使得在不同的日期时间 API 之间进行操作和处理更加方便灵活。
希望本文能对您有所帮助!
(END)