public final class TemporalQueries extends Object
TemporalQuery
共同实现的。
这个类提供了TemporalQuery
常见的实现。这些被定义为必须是常数,与lambda定义不保证。通过将他们曾经在这里,他们成为“正常”的java常量。
查询是从时间对象中提取信息的一个关键工具。他们的存在使得查询过程,允许不同的方法,根据策略设计模式。例子可能是一个查询,检查日期是否是在2月29日之前的一天,或计算的天数到你的下一个生日。
的TemporalField
界面提供查询时态对象的另一种机制。该接口是有限的long
返回。相比之下,查询可以返回任何类型。
有使用TemporalQuery
两等效方法。首先是直接调用这个接口的方法。二是用TemporalAccessor.query(TemporalQuery)
:
这两条线是等价的,但第二种方法是建议时间=这个问题。queryfrom(时间);时间=时间查询(这个问题);建议使用第二种方法,
query(TemporalQuery)
,因为它是一个更清晰的读码。
最常见的实现方法的引用,如LocalDate::from
和ZoneId::from
。额外的普通查询提供回报:
Modifier and Type | Method and Description |
---|---|
static TemporalQuery<Chronology> |
chronology()
为
Chronology 查询。
|
static TemporalQuery<LocalDate> |
localDate()
对于
LocalDate 返回null查询,如果没有找到。
|
static TemporalQuery<LocalTime> |
localTime()
对于
LocalTime 返回null查询,如果没有找到。
|
static TemporalQuery<ZoneOffset> |
offset()
对于
ZoneOffset 返回null查询,如果没有找到。
|
static TemporalQuery<TemporalUnit> |
precision()
最小支持单位的查询。
|
static TemporalQuery<ZoneId> |
zone()
为
ZoneId 宽大的查询,落回
ZoneOffset 。
|
static TemporalQuery<ZoneId> |
zoneId()
为
ZoneId 严格查询。
|
public static TemporalQuery<ZoneId> zoneId()
ZoneId
严格查询。
这一区域的TemporalAccessor
查询。带只返回日期时间概念上包含一个ZoneId
。它不会如果日期时间概念有一个ZoneOffset
返回。因此,ZonedDateTime
将返回getZone()
的结果,而是一个OffsetDateTime
将返回null。
在大多数情况下,应用程序应该使用zone()
这个查询太严格。
从JDK的类实现TemporalAccessor
结果如下:
LocalDate
返回null
LocalTime
返回null
LocalDateTime
返回null
ZonedDateTime
返回相关的zone
OffsetTime
返回null
OffsetDateTime
返回null
ChronoLocalDate
返回nullz-14ddac66- fe22-4260-92c7-bd385d344258 ChronoLocalDateTime
返回null
ChronoZonedDateTime
返回相关的zone
Era
返回null
DayOfWeek
返回null
Month
返回null
Year
返回null
YearMonth
返回null
MonthDay
返回null
ZoneOffset
返回null
Instant
返回null
public static TemporalQuery<Chronology> chronology()
Chronology
这个查询的TemporalAccessor
年表。如果目标TemporalAccessor
代表一个日期,或约会的一部分,那么它应该回归年表,日期的表达。由于这一定义,对象只代表时间,如LocalTime
,将返回null。
从JDK的类实现TemporalAccessor
结果如下:
LocalDate
返回IsoChronology.INSTANCE
LocalTime
返回null(并不代表一个日期)
LocalDateTime
返回IsoChronology.INSTANCE
ZonedDateTime
返回IsoChronology.INSTANCE
OffsetTime
返回null(并不代表一个日期)
OffsetDateTime
返回IsoChronology.INSTANCE
ChronoLocalDate
返回相关的chronology
ChronoLocalDateTime
返回相关的chronology
ChronoZonedDateTime
返回相关的chronology
Era
返回相关的chronology
DayOfWeek
返回null(共享
Month
返回z-7711b7fb-dcaf-4f77-af年表)92-5af97a0a7fe2
Year
返回IsoChronology.INSTANCE
YearMonth
返回IsoChronology.INSTANCE
MonthDay
返回null IsoChronology.INSTANCE
ZoneOffset
返回null(并不代表一个日期)
Instant
返回null(并不代表一个日期)
方法Chronology.from(TemporalAccessor)
可以通过方法引用TemporalQuery
,Chronology::from
。该方法相当于此查询,除非它抛出一个异常,如果无法得到的。
public static TemporalQuery<TemporalUnit> precision()
这一TemporalAccessor
查询的时间精度。如果目标TemporalAccessor
代表一致或完整的日期时间,日期或时间,然后必须返回最小精度实际上支持。请注意,如NANO_OF_DAY
和NANO_OF_SECOND
字段定义的回报总是忽略的精度,因此这是找到实际的最小支撑单元的唯一途径。例如,在GregorianCalendar
实施TemporalAccessor
将返回一个精确的MILLIS
。
从JDK的类实现TemporalAccessor
结果如下:
LocalDate
返回DAYS
LocalTime
返回NANOS
LocalDateTime
返回NANOS
ZonedDateTime
返回NANOS
OffsetTime
返回NANOS
OffsetDateTime
返回NANOS
ChronoLocalDate
返回DAYS
ChronoLocalDateTime
返回NANOS
ChronoZonedDateTime
返回NANOS
Era
返回ERAS
DayOfWeek
返回DAYS
Z- 8cf2c36c-3aeb-438b-b996-65f7db8348bc返回MONTHS
Year
返回YEARS
YearMonth
返回MONTHS
MonthDay
返回null(并不代表一个完整的日期或时间)
ZoneOffset
返回null(并不代表一个日期或时间)
Instant
返回NANOS
public static TemporalQuery<ZoneId> zone()
ZoneId
宽大的查询,落回
ZoneOffset
这一区域的TemporalAccessor
查询。首先试图获得区,使用zoneId()
。如果不是发现它试图获得offset()
。因此,ZonedDateTime
将返回getZone()
的结果,而OffsetDateTime
将返回getOffset()
结果。
在大多数情况下,应用程序应该使用这个查询而不是#zoneId()
。
方法ZoneId.from(TemporalAccessor)
可以通过方法引用,ZoneId::from
一TemporalQuery
。这种方法相当于该查询,除了它抛出一个异常如果不能得到一个区。
public static TemporalQuery<ZoneOffset> offset()
ZoneOffset
返回null查询,如果没有找到。
这将返回一个TemporalQuery
可用于查询的偏移时间的对象。如果时间对象不能提供偏移量,则查询将返回空值。
查询执行检查OFFSET_SECONDS
场并使用它来创建一个ZoneOffset
。
方法ZoneOffset.from(TemporalAccessor)
可以通过方法引用TemporalQuery
,ZoneOffset::from
。此查询和ZoneOffset::from
如果时态对象包含一个偏移量返回相同的结果。如果时间对象不包含偏移量,则方法引用将抛出一个异常,而此查询将返回空值。
public static TemporalQuery<LocalDate> localDate()
LocalDate
返回null查询,如果没有找到。
这将返回一个TemporalQuery
可以用来查询一个时态对象为当地的日期。如果时间对象不能提供本地日期,则查询将返回空值。
查询执行检查EPOCH_DAY
场并使用它来创建一个LocalDate
。
方法ZoneOffset.from(TemporalAccessor)
可以通过方法引用TemporalQuery
,LocalDate::from
。此查询和LocalDate::from
如果时态对象包含一个日期返回相同的结果。如果时间对象不包含日期,则方法引用将抛出一个异常,而此查询将返回空值。
public static TemporalQuery<LocalTime> localTime()
LocalTime
返回null查询,如果没有找到。
这将返回一个TemporalQuery
可以用来查询一个时态对象为当地时间。如果时间对象不能提供本地时间,则查询将返回为空。
查询执行检查NANO_OF_DAY
场并使用它来创建一个LocalTime
。
方法ZoneOffset.from(TemporalAccessor)
可以通过方法引用TemporalQuery
,LocalTime::from
。此查询和LocalTime::from
如果时态对象包含一个时间返回相同的结果。如果时间对象不包含一个时间,那么方法引用将抛出一个异常,而这个查询将返回空值。
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.