Java 教程是为 JDK 8 编写的。本页中描述的示例和实践未利用在后续版本中引入的改进。
时间似乎是一个简单的主题;即便是便宜的手表也能提供合理准确的日期和时间。但是,通过仔细研究,你会发现微妙的复杂性和许多影响你理解时间的因素。例如,在 1 月 31 日添加一个月的结果对于闰年而言与其他年份不同。时区也增加了复杂性。例如,一个国家可能会在短时间内进出夏令时,或者一年多次进入夏令时,或者可能在某一年内完全跳过夏令时。
Date-Time API 使用 ISO-8601 中定义的日历系统作为默认日历。此日历基于公历系统 (Gregorian calendar system)(译注:根据 wiki ,将 Gregorian calendar 称为格时历,后文译为公历,proleptic Gregorian calendar 称为外推格里历,后文亦译为公历,或标注 proleptic),并在全球范围内用作表示日期和时间的事实标准。Date-Time API 中的核心类具有诸如 LocalDateTime,ZonedDateTime 和 OffsetDateTime 之类的名称。所有这些都使用 ISO 日历系统。如果你想使用其他日历系统,例如 Hijrah 或 Thai Buddhist,则 java.time.chrono 包允许你使用其中一个预定义的日历系统。或者你可以创建自己的。
Date-Time API 使用 Unicode Common Locale Data Repository (CLDR)。该仓库支持世界上的语言,并包含世界上最大的可用语言环境数据集。此仓库中的信息已本地化为数百种语言。Date-Time API 还使用 Time-Zone Database (TZDB)。该数据库提供了自 1970 年以来全球每个时区变化的信息,以及自引入该概念以来的主要时区的历史记录。