文档

Java™教程
隐藏目录
概述
路径:日期时间
课程:标准日历

概述

有两种基本的表示时间的方式。一种方式是以人类的术语表示时间,称为人类时间,例如年、月、日、小时、分钟和秒。另一种方式是机器时间,以纳秒分辨率连续地测量时间沿时间线从起点(称为纪元)开始。日期时间包提供了一系列丰富的类来表示日期和时间。日期时间API中的一些类用于表示机器时间,而其他类更适合表示人类时间。

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


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

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

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

类或枚举 小时 分钟 秒* 时区偏移 时区ID toString 输出 讨论位置
Instant          
checked
    2013-08-20T15:16:26.355Z Instant 类
LocalDate
checked
checked
checked
          2013-08-20 日期类
LocalDateTime
checked
checked
checked
checked
checked
checked
    2013-08-20T08:16:26.937 日期和时间类
ZonedDateTime
checked
checked
checked
checked
checked
checked
checked
checked
2013-08-21T00:16:26.941+09:00[Asia/Tokyo] 时区和偏移类
LocalTime      
checked
checked
checked
    08:16:26.943 日期和时间类
MonthDay  
checked
checked
          --08-20 日期类
ZonedDateTime
checked
checked
checked
checked
checked
checked
checked
checked
2013-08-21T00:16:26.941+09:00[Asia/Tokyo] 时区和偏移类
LocalTime      
checked
checked
checked
    08:16:26.943 日期和时间类
MonthDay  
checked
checked
          --08-20 日期类
OffsetTime      
checked
checked
checked
checked
  08:16:26.957-07:00 时区和偏移类
Duration     ** ** **
checked
    PT20H (20小时) 周期和持续时间
Period
checked
checked
checked
      *** *** P10D (10天) 周期和持续时间
* 秒被捕获到纳秒精度。
** 这个类不存储这些信息,但有方法以这些单位提供时间。
*** 当一个Period被添加到一个ZonedDateTime时,会考虑夏令时或其他本地时间差异。

上一页:标准日历
下一页:DayOfWeek和Month枚举