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 透過封裝一個表示自 epoch 起秒數的 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 #

Local 表示與時區無關。

概念上,

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

三個類別皆具備的重要方法

  • 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 上閱讀或評論(發表評論需要登入)