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

📅  最后修改于: 2023-12-03 14:42:50.681000             🧑  作者: Mango

Java中的 OffsetDateTime query() 方法及示例

介绍

OffsetDateTime类是Java 8中的新时间日期API中的一部分。query()方法是该类中的一个方法,用于查询偏移日期时间对象中的某些值。query()方法是一个通用方法,它接受一个TemporalQuery类型的参数,并返回由查询产生的任意类型的对象。

方法签名

以下是OffsetDateTime类中的query()方法的签名:

<R> R query(TemporalQuery<R> query);

在这里:

  • R表示由查询产生的对象的类型。
  • query表示一个TemporalQuery类型的参数,其中TemporalQuery是一个函数式接口,它定义了一个查询方法,该方法接受一个TemporalAccessor类型的参数并返回一个对象。
示例

以下示例演示了如何使用query()方法从偏移日期时间对象中查询年份、月份和天数。

import java.time.OffsetDateTime;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQuery;
import java.time.temporal.TemporalQueries;

public class OffsetDateTimeQueryExample {

    public static void main(String[] args) {
        String dateTimeString = "2022-09-22T10:15:30.123+05:30";
        OffsetDateTime offsetDateTime = OffsetDateTime.parse(dateTimeString);
        
        int year = offsetDateTime.query(new TemporalQuery<Integer>() {
            @Override
            public Integer queryFrom(TemporalAccessor temporal) {
                return temporal.get(TemporalQueries.localDate()).getYear();
            }
        });

        int month = offsetDateTime.query(new TemporalQuery<Integer>() {
            @Override
            public Integer queryFrom(TemporalAccessor temporal) {
                return temporal.get(TemporalQueries.localDate()).getMonthValue();
            }
        });

        int day = offsetDateTime.query(new TemporalQuery<Integer>() {
            @Override
            public Integer queryFrom(TemporalAccessor temporal) {
                return temporal.get(TemporalQueries.localDate()).getDayOfMonth();
            }
        });

        System.out.println("Year: " + year);
        System.out.println("Month: " + month);
        System.out.println("Day: " + day);
    }
}

在上面的示例中,我们首先使用字符串"2022-09-22T10:15:30.123+05:30"创建了一个偏移日期时间对象offsetDateTime。然后,我们使用三个TemporalQuery类型的对象,分别查询了年份、月份和天数。

这里使用了匿名内部类来定义TemporalQuery类型的对象。在每个对象中,我们实现了queryFrom()方法来查询偏移日期时间对象中的特定信息。例如,在查询年份的对象中,我们使用TemporalQueries.localDate()请求一个本地日期对象,并获取该对象的年份。

在运行上面的示例时,它将输出以下内容:

Year: 2022
Month: 9
Day: 22
总结

在这篇文章中,我们介绍了Java 8中的OffsetDateTime query()方法,它用于从偏移日期时间对象中查询某些值。此外,我们还提供了一个示例,演示了如何使用query()方法从偏移日期时间对象中查询年份、月份和天数。