📅  最后修改于: 2023-12-03 15:15:54.950000             🧑  作者: Mango
在Java 8之前,日期和时间的处理使用了许多过时的或者不好用的API,Java 8加入了一个全新的日期和时间API来改变这种情况。
我们先来看LocalDate
。 LocalDate
代表的是不带时区的日期(年月日)。 它可以用于跟踪生日、公共假期等信息。
LocalDate date = LocalDate.now();
System.out.println(date); // 2022-01-28
我们还可以通过of()
方法来创建特定的日期:
LocalDate dateOfBirth = LocalDate.of(1994, 1, 1);
System.out.println(dateOfBirth); // 1994-01-01
接下来是LocalTime
。LocalTime
代表的是不带时区的时间(时分秒),它可以用于跟踪日常任务,如上班时间、约会时间等。
LocalTime time = LocalTime.now();
System.out.println(time); // 14:22:47.846
与LocalDate
一样,我们也可以使用of()
方法来创建特定的时间:
LocalTime bedTime = LocalTime.of(23, 30);
System.out.println(bedTime); // 23:30
LocalTime
提供了一些方便的方法,如plusHours
和minusMinutes
,可用来对时间进行简单的加减运算。
LocalDateTime
是前两个类的组合,它代表了不带时区的日期和时间。可以用于记录事件发生的时间,如一次通话、交易等。
LocalDateTime currentDateTime = LocalDateTime.now();
System.out.println(currentDateTime); // 2022-01-28T14:38:16.834
我们也可以使用of()
方法来创建特定日期和时间的LocalDateTime
:
LocalDateTime dateTime = LocalDateTime.of(1994, 1, 1, 0, 0, 0);
System.out.println(dateTime); // 1994-01-01T00:00
Instant
类代表UNIX时间戳,它是从1970年1月1日UTC时区(协调世界时)的1970-01-01T00:00:00Z的偏移量来计算的。可以用于记录时间戳,如记录特定事件发生的时间。
Instant timestamp = Instant.now();
System.out.println(timestamp); // 2022-01-28T06:40:41.011Z
Duration
类表示时间段,可以用于计算两个时间点之间的持续时间。
LocalTime time1 = LocalTime.of(10, 30);
LocalTime time2 = LocalTime.of(12, 0);
Duration duration = Duration.between(time1, time2);
System.out.println(duration); // PT1H30M
Period
类表示日期之间的差距,可以用于计算两个日期之间的间隔。
LocalDate date1 = LocalDate.of(2022, 1, 20);
LocalDate date2 = LocalDate.of(2022, 1, 28);
Period period = Period.between(date1, date2);
System.out.println(period); // P8D
DateTimeFormatter
类用于格式化和解析日期和时间。它提供了许多预定义的格式,例如ISO_LOCAL_DATE_TIME和ISO_OFFSET_DATE_TIME。
LocalDateTime dateTime = LocalDateTime.of(2022, 1, 28, 14, 55);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
String formattedDateTime = dateTime.format(formatter);
System.out.println(formattedDateTime); // 2022/01/28 14:55:00
LocalDateTime parsedDateTime = LocalDateTime.parse(formattedDateTime, formatter);
System.out.println(parsedDateTime); // 2022-01-28T14:55
总之,Java 8日期时间API提供了许多新功能和类,使日期和时间的处理变得更加简单和直观。