📅  最后修改于: 2023-12-03 15:01:58.133000             🧑  作者: Mango
在Java中,YearMonth类是一个不可变类,用于表示只有年月的日期,例如2020年3月。YearMonth类提供了一个查询方法query(TemporalQuery<R> query)
,用于查询与年月相关的信息并返回结果。
<R> R query(TemporalQuery<R> query)
该方法接受一个TemporalQuery
类型的实例,用于查询年月相关的信息。R
表示查询结果的类型。
以下代码演示了如何使用YearMonth的query()
方法来获取年月的月份名称以及一个自定义的查询结果类型。
import java.time.Month;
import java.time.YearMonth;
import java.time.temporal.TemporalAccessor;
import java.time.temporal.TemporalQueries;
import java.time.temporal.TemporalQuery;
public class YearMonthQueryExample {
public static void main(String[] args) {
//创建一个YearMonth实例
YearMonth yearMonth = YearMonth.of(2020, Month.MARCH);
//获取年月的月份名称
String monthName = yearMonth.query(TemporalQueries.monthName());
System.out.println("Month Name: " + monthName);
//创建一个自定义的TemporalQuery实现类
TemporalQuery<String> query = new TemporalQuery<String>() {
@Override
public String queryFrom(TemporalAccessor temporal) {
YearMonth yearMonth = YearMonth.from(temporal);
int year = yearMonth.getYear();
int month = yearMonth.getMonthValue();
return "Year: " + year + ", Month: " + month;
}
};
//使用自定义的TemporalQuery实现类查询年月信息
String customQueryResult = yearMonth.query(query);
System.out.println("Custom Query Result: " + customQueryResult);
}
}
输出结果如下:
Month Name: March
Custom Query Result: Year: 2020, Month: 3
可以看到,使用query()
方法可以方便地获取年月相关的信息。我们可以使用预定义的TemporalQueries
类来查询一些常用的信息,也可以创建自定义的TemporalQuery
实现类来查询我们需要的信息。