Java教程是针对JDK 8编写的。本页面中描述的示例和实践不利用后续版本引入的改进,并可能使用不再可用的技术。
有关Java SE 9及后续版本中更新的语言功能的摘要,请参见Java语言更改。
有关所有JDK版本的新功能、增强功能以及已删除或不推荐使用选项的信息,请参见JDK发布说明。
日期时间API的核心是java.time包。定义在java.time中的类基于ISO日历系统,这是表示日期和时间的世界标准。ISO日历遵循修正格里高利历的规则。格里高利历于1582年引入;在修正格里高利历中,日期向前扩展,以创建一条一致、统一的时间线,并简化日期计算。
本课程涵盖以下主题:
本节比较了人类时间和机器时间的概念,并提供了java.time包中主要基于时间的类的表格。
本节讨论了定义星期几(DayOfWeek)和月份(Month)的枚举。
本节展示了仅处理日期而不涉及时间或时区的基于时间的类。这四个类是LocalDate、YearMonth、MonthDay和Year。
本节介绍了处理时间的LocalTime类和处理日期和时间的LocalDateTime类,但不涉及时区。
本节讨论存储时区(或时区偏移)信息的基于时间的类ZonedDateTime、OffsetDateTime和OffsetTime。还讨论了支持的类ZoneId、ZoneRules和ZoneOffset。
本节讨论了表示时间线上瞬时时刻的Instant类。
本节概述了如何使用预定义的格式化器来格式化和解析日期和时间值。
本节概述了支持时间类、字段(TemporalField和ChronoField)和单位(TemporalUnit和ChronoUnit)的java.time.temporal包。本节还解释了如何使用时间调整器获取调整后的时间值,例如“4月11日之后的第一个星期二”,以及如何执行时间查询。
本节介绍了如何使用Period和Duration类以及ChronoUnit.between方法来计算时间。
本节简要介绍了Clock类。您可以使用此类提供一个替代系统时钟的时钟。
本节解释了如何将ISO日历系统中的日期转换为非ISO日历系统(如JapaneseDate或ThaiBuddhistDate)中的日期。
本节提供了一些关于如何将旧的java.util.Date和java.util.Calendar代码转换为日期时间API的技巧。
本节提供了标准日历课程的总结。