Java 日期与时间

最后更新: 2026-06-01 17:26:29 +0800 +0800
tags: Date-Time | Java | Jdk
原文以英文撰写。您正在阅读AI翻译版本。

与日期时间相关的 SDK。

时区是人为构造的概念,只有涉及特定地区时才有意义。

与直觉相反,本地时间 表示与时区无关,也就是说,相关类没有存储时区信息的字段。

Java 8 之前:java.util.Date & Java.util.Calendar #

Java 8 及更高版本:java.time.* #

interface Temporal & final Class Instant Implements Temporal #

Temporal 实例表示任意时间范围内的一个时刻。 可以向 this 加上或减去一段时间,并仍然产生一个 Temporal。

最终类 Instant 通过封装一个表示自纪元以来秒数的 long 和一个表示该秒内纳秒数的 int 来实现 Temporal。 重要方法:

  • static Instant now()
  • static Instant ofEpochMillis(long millis)
  • long until(Temporal endExclusive, TemporalUnit unit)

统一抽象:interface TemporalUnit 和 enum ChronoUnit Implements TemporalUnit #

每个 ChronoUnit 枚举实例本质上都是带有描述性名称的 Duration。

与时区无关:java.time.LocalDate / java.time.LocalDateTime / java.time.LocalTime #

本地 表示与时区无关。

从概念上说,

  • LocalDate 是一个 (year-month-day) 三元组,
  • LocalTime 是一个 (hour-minute-second) 三元组,
  • LocalDateTime 是一个 (year-month-day-hour-minute-second) 六元组。

重要方法(适用于全部 3 个类)

  • long until(Temporal endExclusive, TemporalUnit unit)

    按指定单位计算距离另一个日期的时间量。

java.time.Clock #

java.time.DateTimeException #

java.time.DayOfWeek #

java.time.Duration #

java.time.Month #

java.time.MonthDay #

java.time.OffsetDateTime #

java.time.OffsetTime #

java.time.Period #

java.time.Ser #

java.time.Year #

java.time.YearMonth #

java.time.ZonedDateTime #

java.time.ZoneId #

java.time.ZoneOffset #

java.time.ZoneRegion #

评论

在 GitHub 上阅读或评论(发表评论需要登录)