📅  最后修改于: 2023-12-03 15:01:35.736000             🧑  作者: Mango
Java 8 引入了全新的 Date and Time API(也称为 JSR 310),以取代旧的 java.util.Date、java.util.Calendar 和 java.text.SimpleDateFormat 等类。新的 API 支持时区,可以更好地处理不同地区的日期和时间。
Instant 类表示时间戳,它是自 1970 年 1 月 1 日 00:00:00 UTC(格林威治标准时间)起的秒数。
Instant instant = Instant.now(); // 当前时间
LocalDate 类表示本地日期(不包含时间),如 2022-08-08。
LocalDate date = LocalDate.now(); // 当前日期
LocalTime 类表示本地时间(不包含日期),如 12:20:30。
LocalTime time = LocalTime.now(); // 当前时间
LocalDateTime 类表示本地日期时间,如 2022-08-08T12:20:30。
LocalDateTime dateTime = LocalDateTime.now(); // 当前日期时间
ZonedDateTime 类表示时区日期时间,它在 LocalDateTime 的基础上增加了时区信息。
ZonedDateTime zonedDateTime = ZonedDateTime.now(); // 当前时区日期时间
DateTimeFormatter 类用于格式化时间,可以将日期、时间、日期时间等格式化为指定的字符串。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime dateTime = LocalDateTime.now();
String formattedDateTime = dateTime.format(formatter); // 格式化为指定字符串
Duration 表示两个时刻之间的时间长度,它可以表示以秒和纳秒为单位的时间差。
Instant start = Instant.now();
// 执行一些操作
Instant end = Instant.now();
Duration duration = Duration.between(start, end); // 计算时间差
Period 表示两个日期之间的时间长度,它可以表示以天、月和年等为单位的时间差。
LocalDate startDate = LocalDate.of(2022, 8, 1);
LocalDate endDate = LocalDate.of(2022, 8, 8);
Period period = Period.between(startDate, endDate); // 计算时间差
以上就是 Java 8 Date and Time API 的介绍。它提供了更好的时间处理方式,可以更方便地完成日期、时间、日期时间的处理。