类 | 描述 |
---|---|
Clock |
使用时区提供对当前即时、日期和时间的访问的时钟。
|
Duration |
基于时间的时间,如“34.5秒”。
|
Instant |
时间线上的一个瞬时点。
|
LocalDate |
一个没有在ISO-8601日历系统时区的日期,如
2007-12-03 。
|
LocalDateTime |
一个没有在ISO-8601日历系统时区的日期时间,如
2007-12-03T10:15:30 。
|
LocalTime |
一时间没有时间带在ISO-8601日历系统,如
10:15:30 。
|
MonthDay |
在ISO-8601日历系统月日,如
--12-03 。
|
OffsetDateTime |
一个UTC偏移量/格林尼治在ISO-8601日历系统日期时间,如
2007-12-03T10:15:30+01:00 。
|
OffsetTime |
与UTC偏移量/格林尼治在ISO-8601日历系统的时间,如
10:15:30+01:00 。
|
Period |
一种基于日期的日历系统中ISO-8601的时间,如2年、3个月和4天。
|
Year |
在ISO-8601日历系统一年,如
2007 。
|
YearMonth |
一年中的ISO-8601日历系统月,如
2007-12 。
|
ZonedDateTime |
一个在ISO-8601日历系统时区的日期时间,如
2007-12-03T10:15:30+01:00 Europe/Paris 。
|
ZoneId |
一个时区的ID,如
Europe/Paris 。
|
ZoneOffset |
一个时区偏移量从格林尼治/ UTC,如
+02:00 。
|
Enum | 描述 |
---|---|
DayOfWeek |
一周的一天,如“星期二”。
|
Month |
一年一个月,如“七月”。
|
异常 | 描述 |
---|---|
DateTimeException |
用于在计算日期时间时表示问题的异常。
|
日期、时间、时刻主要的API,和持续时间。
类定义在这里代表委托日期时间的概念,包括时间、持续时间、日期、时间、时区和时间。他们是基于ISO的日历系统,这是事实上世界历继预期公历规则。所有的类都是不可变的和线程安全的。
每一个日期时间实例都是由一个方便的由原料药提供的字段组成的。低级别的访问的字段引用的java.time.temporal
包。每个类包括支持打印和解析所有日期和时间的方式。指的是java.time.format
包定制选项。
包中包含的java.time.chrono
日历API ChronoLocalDate
中性,ChronoLocalDateTime
,ChronoZonedDateTime
和Era
。这是适用于需要使用本地化的日历应用程序。建议应用程序使用ISO-8601日期和时间类从这个包跨系统边界,如数据库或整个网络。日历中性的接口应该保留与用户的交互。
Instant
本质上是一种数字时间戳。当前可以从Clock
检索。这记录在某个时间点的坚持是有用的,过去一直是从System.currentTimeMillis()
相关存储结果。
LocalDate
店日期没有时间。本店的日期像2010-12-03”可以用来存储一个生日。
LocalTime
存储时间没有约会。本店一时间“11:30”,可以用来存储一个打开和关闭的时间。
LocalDateTime
存储日期和时间。本店日期时间像2010-12-03t11:30”。
ZonedDateTime
存储日期和时间与时区。如果你想执行的日期和时间,考虑到ZoneId
的精确计算,这是非常有用的,如“欧洲/巴黎。在可能的情况下,建议使用一个没有时区的简单类。时区的广泛使用会给应用程序增加相当大的复杂性。
除了日期和时间之外,该接口还允许时间和持续时间的存储。一个Duration
是一个简单的测量时间沿着时间线来。一个Period
表达意义的人类在单位时间量,如年或小时。
Month
店一个月的。这家商店在一个单一的一个月的隔离,如“十二月”。
DayOfWeek
店一星期自己。这家商店每周一天的隔离,如“星期二”。
Year
店一年自己。这家商店一年中隔离,如“2010”。
YearMonth
店一年没有一天或一个月。本店一年和月,如“2010-12”可用于信用卡到期。
MonthDay
店一个月,一天没有一年或一年的时间。本店一个月,每月的最后一天,如“12-03”可以用来储存像生日一年一度的年不存储。
OffsetTime
存储时间与UTC偏移量没有日期。本店的日期像11:30 + 01:00”。的ZoneOffset
的形式是“+”01:00。
OffsetDateTime
存储日期和时间与UTC的偏移量。本店日期时间像2010-12-03t11:30 + 01:00”。这是有时在XML消息和其他形式的持久性,但包含较少的信息比一个完整的时区。
除非另有说明,通过空参数的构造函数或方法的任何类或接口在这个包会导致NullPointerException
被。Javadoc“@参数”的定义是用于概括无效行为。“@投NullPointerException
”是没有明确的记录在每一个方法。
所有的计算应检查数值溢出和扔一个ArithmeticException
或DateTimeException
。
该应用程序的接口被设计为拒绝早期和清除这种行为。一个关键的例外是任何一个方法,需要一个对象,并返回一个布尔值,用于检查或验证的目的,一般会返回假为空。
该接口的设计是类型安全的,合理的主要高层次的。因此,有单独的类的不同的概念,日期,时间和日期时间,加上偏移和时区的变种。这似乎是一个很大的类,但大多数应用程序可以开始只有五个日期/时间类型。
Instant
-时间戳LocalDate
-没有时间日期,或任何参考或时区偏移LocalTime
-没有日期时间,或任何参考或时区偏移LocalDateTime
结合的日期和时间,但仍然没有任何偏移或时区ZonedDateTime
-“时区”日期时间和解决从UTC偏移/格林尼治Instant
是最等价类java.util.Date
。ZonedDateTime
是最等价类java.util.GregorianCalendar
。
在可能的情况下,应用程序应该使用LocalDate
,LocalTime
和LocalDateTime
更好的域模型。例如,一个生日应该存储在代码LocalDate
。记住,使用任何一个time-zone,如欧洲/巴黎,将相当复杂的计算。许多应用程序可以只写使用LocalDate
,LocalTime
和Instant
,在用户界面上添加的时区(UI)层。
根据日期时间类型OffsetTime
和OffsetDateTime
偏移,用于网络协议和数据库访问。例如,大多数数据库不能自动存储一个时间区如欧洲/巴黎,但他们可以存储偏移像' + ' 02:00。
课程还提供一个日期,最重要的部分包括Month
,DayOfWeek
,Year
,YearMonth
和MonthDay
。这些可以用来模拟更复杂的日期时间概念。例如,YearMonth
用于代表一个信用卡有效期。
请注意,虽然有大量的类代表日期的不同方面,但很少有处理时间的不同方面的处理。以下类型的安全性,其逻辑结论会导致方法重写,继承类小时分钟,小时分钟秒和小时秒秒秒。虽然逻辑上是纯粹的,这是不是一个实用的选择,因为它将几乎增加了三倍,由于日期和时间的组合。因此,LocalTime
用于所有精度的时间,用来暗示低精度的零。
以下完全的类型安全的最终结论也可能认为一个单独的类中的每个字段的日期时间,如一个类和一个dayofmonth hourofday。这种方法被尝试过,但在java语言过于复杂,缺乏实用性。类似的问题发生与期间。有一个单独的类的一个单独的类,每个周期单元,如一个类型为几年和一个类型的分钟。然而,这产生了大量的类和类型转换的问题。因此,提供的日期时间类型的集合是纯度和实用性之间的一种折衷。
在方法的数量方面有一个比较大的表面积。这是通过使用一致的方法管理的前缀。
of
静态工厂方法parse
静态工厂方法重点解析get
-获取某物的价值is
-检查,如果事情是真的with
-一个二传不等价plus
-添加量为对象minus
-减去金额从一个对象to
-转换到另一种类型的对象at
结合此对象与另一个,如date.atTime(time)
多日历系统是一个尴尬的除了设计挑战。第一个原则是大多数用户都希望标准的标准化的日历系统。因此,主要的类是异。第二个原则是,大多数想要一个非异化日历系统的人都希望它为用户交互,因此它是一个用户界面本地化的问题。因此,在数据模型和持久存储中,日期和时间对象应保持为标准化对象,只有转换为和从本地日历中显示的。日历系统将分别存储在用户首选项中。
有,但是,一些有限的使用情况下,用户认为他们需要存储和使用日期在任意日历系统在整个应用程序。这是由ChronoLocalDate
,然而它是使用前阅读所有相关的警告在这个接口的Javadoc至关重要。总之,需要多个日历系统之间一般互操作通常需要写在一个非常不同的方式比单纯使用ISO的日历应用程序,因此,大多数应用程序应该使用ISO和避免ChronoLocalDate
。
该接口还专为用户的可扩展性,因为有许多方法计算时间。的field和unit API,通过TemporalAccessor
和Temporal
应用提供很大的灵活性。此外,该TemporalQuery
和TemporalAdjuster
接口提供日常的力量,让代码阅读贴近业务需求:
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.