📅  最后修改于: 2023-12-03 14:42:50.681000             🧑  作者: Mango
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()
方法从偏移日期时间对象中查询年份、月份和天数。