📅  最后修改于: 2023-12-03 15:01:28.138000             🧑  作者: Mango
Java 8 引入了全新的日期时间 API,该 API 设计得更加简单、易于使用,并且应用更加广泛。这个 API 被称为 java.time
,该 API 解决了旧的 java.util.Date
和 java.util.Calendar
类存在的各种问题。
Java 8 中的新日期时间 API 中提供了三个类:LocalDate
、LocalTime
和 LocalDateTime
,这三个类都是使用频率非常高的类。
LocalDate
表示不带时区的日期,例如:年月日,可以使用 now()
方法获取当前日期,如下所示:
LocalDate currentDate = LocalDate.now();
可以使用 of()
方法创建一个指定日期的 LocalDate 对象,如下所示:
LocalDate date = LocalDate.of(2018, 8, 18);
LocalTime
则表示不带时区的时间,例如:时分秒。同样,也可以使用 now()
方法获取当前时间,如下所示:
LocalTime currentTime = LocalTime.now();
可以使用 of()
方法创建一个指定时间的 LocalTime 对象,如下所示:
LocalTime time = LocalTime.of(20, 30, 12);
LocalDateTime
则表示不带时区的日期和时间,例如:年月日时分秒。同样,也可以使用 now()
方法获取当前日期和时间,如下所示:
LocalDateTime currentDateTime = LocalDateTime.now();
可以使用 of()
方法创建一个指定日期和时间的 LocalDateTime 对象,如下所示:
LocalDateTime dateTime = LocalDateTime.of(2018, 8, 18, 20, 30, 12);
在 Java 8 中,还有一个名为 Instant
的类,它表示了一个时间戳,也就是我们平时所说的 Unix 时间戳。通过 Instant.now()
方法,我们可以获取当前时间的时间戳,如下所示:
Instant instant = Instant.now();
可以使用 ofEpochMilli()
或 ofEpochSecond()
方法创建一个指定时间戳的 Instant 对象,如下所示:
Instant instant1 = Instant.ofEpochMilli(1593106856000L);
Instant instant2 = Instant.ofEpochSecond(1593106856L);
在 Java 8 中,还有两个名为 Duration
和 Period
的类,它们分别用于计算时间间隔和日期间隔。
Duration
类用于表示两个时间之间的时间间隔,可以使用 between()
方法计算两个时间的时间间隔,如下所示:
Duration duration = Duration.between(LocalTime.of(10, 0), LocalTime.of(12, 0));
Period
类则用于表示两个日期之间的日期间隔,可以使用 between()
方法计算两个日期的日期间隔,如下所示:
Period period = Period.between(LocalDate.of(2020, 7, 1), LocalDate.of(2020, 8, 1));
DateTimeFormatter
类用于格式化日期和时间,可以使用 ofPattern()
方法创建一个格式化器,如下所示:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
可以使用格式化器的 format()
方法将日期或时间格式化为一个字符串,如下所示:
String dateTimeString = LocalDateTime.now().format(formatter);
也可以使用格式化器的 parse()
方法将一个字符串解析为日期或时间,如下所示:
LocalDateTime dateTime = LocalDateTime.parse("2020-07-01 12:30:00", formatter);
Java 8 中的新日期时间 API 为我们提供了一套简单、易用、完整的日期和时间处理工具,从而使得在 Java 中处理日期和时间变得更加容易和精确。