📅  最后修改于: 2023-12-03 15:31:51.372000             🧑  作者: Mango
ChronoZonedDateTime
是Java 8中新添加的日期时间API中的一个类,它表示了一个时区敏感的日期和时间,并支持日期时间操作,比如添加、减去时间、比较和格式化等操作。query()
方法是用于执行自定义查询的方法,可以通过实现TemporalQuery
接口来实现自定义查询。在本文中,我们将了解ChronoZonedDateTime query()
方法和给出一个示例。
ChronoZonedDateTime query()
方法query()
方法的定义如下:
<R> R query(TemporalQuery<R> query)
该方法接受一个TemporalQuery
类型的参数,并返回一个泛型类型R
的结果。TemporalQuery
是查询接口,它定义了一个用于查询日期和时间对象Temporal
的方法。ChronoZonedDateTime
实现了Temporal
接口,因此可以通过query()
方法执行查询操作。
下面是一个示例,我们将通过实现TemporalQuery
接口来查询指定日期(2018年12月12日)的下午3点(15:00)在澳大利亚悉尼的时间。示例代码如下:
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.temporal.TemporalQuery;
public class ChronoZonedDateTimeQueryExample {
public static void main(String[] args) {
LocalDateTime localDateTime = LocalDateTime.of(2018, 12, 12, 15, 0);
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("Australia/Sydney"));
// Define a temporal query to get the hour of day
TemporalQuery<Integer> hourQuery = t -> t.getHour();
// Query the hour of day using the query method
int hour = zonedDateTime.query(hourQuery);
System.out.println("The hour of day in Australia/Sydney on Dec 12, 2018 at 3 PM is: " + hour);
}
}
在上面的示例中,我们首先创建了一个LocalDateTime
对象表示2018年12月12日下午3点,然后使用ZoneId
创建了一个ZonedDateTime
对象,代表澳大利亚悉尼的时间。接下来,我们定义了一个TemporalQuery
对象,用于查询ZonedDateTime
对象中的小时数。最后,我们通过query()
方法执行查询操作,将查询结果打印出来。
query()
方法可以帮助开发者实现自定义查询,可以查询出时间中的任何部分信息(比如年、月、日、小时、分钟、秒等等)。以上是ChronoZonedDateTime
类中的query()
方法的简单介绍和示例。希望它能帮助你更好地理解这个方法的作用和用法。