📌  相关文章
📜  Java中的 ChronoZonedDateTime query() 方法和示例(1)

📅  最后修改于: 2023-12-03 15:31:51.372000             🧑  作者: Mango

Java中的 ChronoZonedDateTime query() 方法和示例

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()方法的简单介绍和示例。希望它能帮助你更好地理解这个方法的作用和用法。