系列中的上一篇
当前教程
标准日历
系列中的下一篇

系列中的上一篇: 日期时间 API 概述

系列中的下一篇: 星期几和月份枚举

标准日历

 

标准日历

有两种基本方法可以表示时间。一种方法以人类术语表示时间,称为人类时间,例如年、月、日、时、分和秒。另一种方法,机器时间,从称为纪元的起点开始,以纳秒分辨率沿时间轴连续测量时间。日期时间包提供了一系列丰富的类来表示日期和时间。日期时间 API 中的一些类旨在表示机器时间,而另一些类更适合表示人类时间。

首先确定您需要日期和时间的哪些方面,然后选择满足这些需求的类或多个类。在选择基于时间的类时,您首先要决定是需要表示人类时间还是机器时间。然后确定您需要表示时间的哪些方面。您需要时区吗?日期和时间?仅日期?如果您需要日期,您需要月、日和年,还是子集?

术语:日期时间 API 中捕获和处理日期或时间值的类,例如 InstantLocalDateTimeZonedDateTime,在本节中称为基于时间的类(或类型)。支持类型,例如 TemporalAdjuster 接口或 DayOfWeek 枚举,不包括在此定义中。

例如,您可以使用 LocalDate 对象来表示出生日期,因为大多数人都在同一天庆祝生日,无论他们是在自己的出生地还是在国际日期变更线的另一边。如果您正在跟踪星象时间,那么您可能希望使用 LocalDateTime 对象来表示出生日期和时间,或者使用 ZonedDateTime,它还包括时区。如果您正在创建时间戳,那么您很可能希望使用 Instant,它允许您将时间轴上的一个瞬时点与另一个瞬时点进行比较。

下表总结了 java.time 包中存储日期和/或时间信息或可用于测量时间段的基于时间的类。列中的复选标记表示该类使用该特定类型的数据,而 toString() 输出列显示使用 toString() 方法打印的实例。讨论位置列链接到教程中的相关页面。

类或枚举 内容 toString() 输出 讨论位置
Instant 秒 (1) 2013-08-20T15:16:26.355Z Instant 类
LocalDate 年、月、日 2013-08-20 日期类
LocalDateTime 年、月、日、时、分、秒 2013-08-20T08:16:26.937 日期和时间类
ZonedDateTime 年、月、日、时、分、秒、时区偏移量、时区 ID 2013-08-21T00:16:26.941+09:00[Asia/Tokyo] 时区和偏移量类
LocalTime 时、分、秒 08:16:26.943 日期和时间类
MonthDay 月、日 --08-20 日期类
Year Year 2013 日期类
YearMonth 年、月 2013-08 日期类
Month Month AUGUST 星期几和月份枚举
OffsetDateTime 年、月、日、时、分、秒、时区偏移量 2013-08-20T08:16:26.954-07:00 时区和偏移量类
OffsetTime 时、分、秒、时区偏移量 08:16:26.957-07:00 时区和偏移量类
Duration 日 (2)、时 (2)、分 (2)、秒 PT20H (20 小时) 周期和持续时间
Period 年、月、日 (3) P10D (10 天) 周期和持续时间
``

注释

(1): 秒捕获到纳秒精度。

(2): 此类不存储此信息,但具有以这些单位提供时间的方法。

(3): 当将周期添加到 ZonedDateTime 时,会观察到夏令时或其他本地时间差异。

在本教程中


上次更新: 2022 年 1 月 27 日


系列中的上一篇
当前教程
标准日历
系列中的下一篇

系列中的上一篇: 日期时间 API 概述

系列中的下一篇: 星期几和月份枚举