📜  Java中的 YearMonth query() 方法及示例(1)

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

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

在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实现类来查询我们需要的信息。