- java.lang.Object
-
- java.time.temporal.TemporalQueries
-
public final class TemporalQueries extends Object
TemporalQuery常见实现。此类提供
TemporalQuery的常见实现。 这里定义它们必须是常量,lambda的定义并不能保证。 通过在这里分配一次,它们就变成了“普通的”Java常量。查询是从临时对象中提取信息的关键工具。 它们的存在是为了使查询过程外化,允许根据策略设计模式采用不同的方法。 示例可能是查询日期是否是闰年2月29日前一天的查询,或计算下一个生日的天数。
TemporalField接口提供了另一种查询时态对象的机制。 该界面仅限于返回long。 相比之下,查询可以返回任何类型。有两种使用
TemporalQuery等效方法。 第一种是直接在此接口上调用方法。 第二种是使用TemporalAccessor.query(TemporalQuery):// these two lines are equivalent, but the second approach is recommended temporal = thisQuery.queryFrom(temporal); temporal = temporal.query(thisQuery);建议使用第二种方法query(TemporalQuery),因为在代码中读取它会更加清晰。最常见的实现是方法引用,例如
LocalDate::from和ZoneId::from。 提供其他常见查询以返回:- 年表,
- 一个LocalDate,
- 一个LocalTime,
- 一个ZoneOffset,
- 精确,
- 一个区域,或
- zoneId。
- 从以下版本开始:
- 1.8
-
-
方法摘要
所有方法 静态方法 具体的方法 变量和类型 方法 描述 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。
-
-
-
方法详细信息
-
zoneId
public static TemporalQuery<ZoneId> zoneId()
严格查询ZoneId。这将查询区域的
TemporalAccessor。 仅当日期时间在概念上包含ZoneId时才返回该区域。 如果日期时间仅在概念上具有ZoneOffset,则不会返回。 因此,一个ZonedDateTime将返回结果的getZone(),而是OffsetDateTime将返回null。在大多数情况下,应用程序应使用
zone(),因为此查询过于严格。实现
TemporalAccessorJDK类的结果如下:
LocalDate返回null
LocalTime返回null
LocalDateTime返回null
ZonedDateTime返回关联的区域
OffsetTime返回null
OffsetDateTime返回null
ChronoLocalDate返回null
ChronoLocalDateTime返回null
ChronoZonedDateTime返回关联的区域
Era返回null
DayOfWeek返回null
Month返回null
Year返回null
YearMonth返回null
MonthDay返回null
ZoneOffset返回null
Instant返回null- 结果
- 一个查询,可以获取temporal的区域ID,而不是null
-
chronology
public static TemporalQuery<Chronology> chronology()
查询Chronology。这将查询
TemporalAccessor的年表。 如果目标TemporalAccessor表示日期或日期的一部分,则它应返回表示日期的年表。作为此定义的结果,仅表示时间的对象(例如LocalTime)将返回null。实现
TemporalAccessorJDK类的结果如下:
LocalDate返回IsoChronology.INSTANCE
LocalTime返回null(不代表日期)
LocalDateTime返回IsoChronology.INSTANCE
ZonedDateTime返回IsoChronology.INSTANCE
OffsetTime返回null(不表示日期)
OffsetDateTime返回IsoChronology.INSTANCE
ChronoLocalDate返回关联的年表
ChronoLocalDateTime返回关联的年表
ChronoZonedDateTime返回关联的年表
Era返回关联的年表
DayOfWeek返回null(按时间顺序共享)
Month返回IsoChronology.INSTANCE
Year返回IsoChronology.INSTANCE
YearMonth返回IsoChronology.INSTANCE
MonthDay返回nullIsoChronology.INSTANCE
ZoneOffset返回null(不代表日期)
Instant返回null(不表示日期)该方法
Chronology.from(TemporalAccessor)可以用作一个TemporalQuery经由方法参考,Chronology::from。 该方法等效于此查询,但如果无法获得年表,则会抛出异常。- 结果
- 一个查询,可以获取时间的年表,而不是空
-
precision
public static TemporalQuery<TemporalUnit> precision()
查询支持的最小单位。这将查询
TemporalAccessor的时间精度。 如果目标TemporalAccessor表示一致或完整的日期时间,日期或时间,则必须返回实际支持的最小精度。 请注意,NANO_OF_DAY和NANO_OF_SECOND等字段定义为始终返回忽略精度,因此这是查找实际最小支持单位的唯一方法。 例如,GregorianCalendar执行TemporalAccessor它将返回精度MILLIS。实现
TemporalAccessorJDK类的结果如下:
LocalDate返回DAYS
LocalTime返回NANOS
LocalDateTime返回NANOS
ZonedDateTime返回NANOS
OffsetTime返回NANOS
OffsetDateTime返回NANOS
ChronoLocalDate返回DAYS
ChronoLocalDateTime返回NANOS
ChronoZonedDateTime返回NANOS
Era返回ERAS
DayOfWeek返回DAYS
Month返回MONTHS
Year返回YEARS
YearMonth返回MONTHS
MonthDay返回null(不表示完整的日期或时间)
ZoneOffset返回null(不代表日期或时间)
Instant返回NANOS- 结果
- 一个可以获取temporal的精度而不是null的查询
-
zone
public static TemporalQuery<ZoneId> zone()
一个宽松的查询ZoneId,回落到ZoneOffset。这将查询区域的
TemporalAccessor。 它首先尝试使用zoneId()获取区域。 如果没有找到它,它会尝试获取offset()。 因此,一个ZonedDateTime将返回的结果getZone(),而一个OffsetDateTime将返回的结果getOffset()。在大多数情况下,应用程序应使用此查询而不是
#zoneId()。该方法
ZoneId.from(TemporalAccessor)可以用作一个TemporalQuery经由方法参考,ZoneId::from。 该方法等效于此查询,但如果无法获取区域,则抛出异常。- 结果
- 可以获取临时区域ID或偏移量的查询,而不是null
-
offset
public static TemporalQuery<ZoneOffset> offset()
查询ZoneOffset如果未找到则返回null。这将返回
TemporalQuery,可用于查询时间对象的偏移量。 如果临时对象无法提供偏移量,则查询将返回null。查询实现检查
OFFSET_SECONDS字段并使用它创建ZoneOffset。该方法
ZoneOffset.from(TemporalAccessor)可以用作一个TemporalQuery经由方法参考,ZoneOffset::from。 如果时态对象包含偏移量,则此查询和ZoneOffset::from将返回相同的结果。 如果temporal对象不包含偏移量,则方法引用将抛出异常,而此查询将返回null。- 结果
- 可以获取temporal的偏移量的查询,而不是null
-
localDate
public static TemporalQuery<LocalDate> localDate()
查询LocalDate如果未找到则返回null。这将返回
TemporalQuery,可用于查询本地日期的临时对象。 如果临时对象无法提供本地日期,则查询将返回null。查询实现检查
EPOCH_DAY字段并使用它创建LocalDate。该方法
ZoneOffset.from(TemporalAccessor)可以用作一个TemporalQuery经由方法参考,LocalDate::from。 如果临时对象包含日期,则此查询和LocalDate::from将返回相同的结果。 如果临时对象不包含日期,则方法引用将抛出异常,而此查询将返回null。- 结果
- 可以获取时间日期的查询,而不是null
-
localTime
public static TemporalQuery<LocalTime> localTime()
如果找不到,LocalTime返回null的查询LocalTime。这将返回
TemporalQuery,可用于查询本地时间的临时对象。 如果临时对象无法提供本地时间,则查询将返回null。查询实现检查
NANO_OF_DAY字段并使用它创建LocalTime。该方法
ZoneOffset.from(TemporalAccessor)可以用作一个TemporalQuery经由方法参考,LocalTime::from。 如果时态对象包含时间,则此查询和LocalTime::from将返回相同的结果。 如果临时对象不包含时间,则方法引用将抛出异常,而此查询将返回null。- 结果
- 一个可以获取时间的查询,而不是null
-
-