简介

  • 从Java 8开始,java.time包提供了新的日期和时间API,主要涉及的类型有
    • 本地日期和时间:LocalDateTime,LocalDate,LocalTime
    • 带时区的日期和时间:ZonedDateTime
    • 时刻:Instant
    • 时区:ZoneId,ZoneOffset
    • 时间间隔:Duration
  • 以及一套新的用于取代SimpleDateFormat的格式化类型DateTimeFormatter
  • 和旧的API相比,新的API严格区分了时刻、本地日期、本地时间和带时区的时间,并且对时间和日期的计算更加方便
  • 此外,新API修正了2个不合理的常量设计
    • Month的范围用1~12表示1月到12月
    • Week的范围用1~7表示周一到周日
  • 新API几乎都是不可变类型(和String类似),可以放心使用不必担心被修改

    使用

    ```java public class LocalDateTimeTest { public static void main(String[] args) {
    1. LocalDate d = LocalDate.now(); // 当前日期
    2. LocalTime t = LocalTime.now(); // 当前时间
    3. LocalDateTime dt = LocalDateTime.now(); // 当前日期和时间
    4. System.out.println(d); // 严格按照ISO 8601格式打印
    5. System.out.println(t); // 严格按照ISO 8601格式打印
    6. System.out.println(dt); // 严格按照ISO 8601格式打印
    } }

```