📅  最后修改于: 2023-12-03 15:31:56.320000             🧑  作者: Mango
在 Java 的 java.time
包中的 YearMonth
类提供了 range()
方法,可以获取到一个 YearMonth
对象所包含的年份和月份的范围,即该年份的第一天和最后一天日期。该方法返回 TemporalAmount
对象,需要使用 LocalDate
对象的 plus()
和 minus()
方法来计算具体的日期。
public TemporalAmount range(TemporalField field)
该方法接收一个参数 field
,表示要获取的范围。field
参数可以是 ChronoField.YEAR
或 ChronoField.MONTH_OF_YEAR
,分别表示获取年份和月份的范围。
以下是一个示例程序,演示如何使用 YearMonth
的 range()
方法来获取某一年份或月份的第一天和最后一天的日期:
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAmount;
public class YearMonthRangeExample {
public static void main(String[] args) {
YearMonth yearMonth = YearMonth.of(2022, 2);
// 获取该年份的第一天和最后一天
TemporalAmount yearRange = yearMonth.range(ChronoField.YEAR);
LocalDate yearFirstDay = LocalDate.of((int) yearRange.get(ChronoField.YEAR), 1, 1);
LocalDate yearLastDay = LocalDate.of((int) yearRange.get(ChronoField.YEAR), 12, 31);
System.out.println("Year " + yearRange.get(ChronoField.YEAR) + " first day: " + yearFirstDay);
System.out.println("Year " + yearRange.get(ChronoField.YEAR) + " last day: " + yearLastDay);
// 获取该月份的第一天和最后一天
TemporalAmount monthRange = yearMonth.range(ChronoField.MONTH_OF_YEAR);
LocalDate monthFirstDay = LocalDate.of(yearMonth.getYear(), yearMonth.getMonthValue(), 1);
LocalDate monthLastDay = monthFirstDay.plus(monthRange).minus(1);
System.out.println("Month " + yearMonth.getMonthValue() + " first day: " + monthFirstDay);
System.out.println("Month " + yearMonth.getMonthValue() + " last day: " + monthLastDay);
}
}
输出结果:
Year 2022 first day: 2022-01-01
Year 2022 last day: 2022-12-31
Month 2 first day: 2022-02-01
Month 2 last day: 2022-02-28
上述示例中,我们通过 YearMonth
的 of()
方法创建了一个表示 2022
年 2
月的 YearMonth
对象。然后分别调用了 range()
方法来获取该年份和月份的范围,并通过 LocalDate
的相应方法计算了该年份和月份的第一天和最后一天的日期。
需要注意的是,获取月份范围后,我们使用了 LocalDate
对象的 plus()
和 minus()
方法来计算月份的最后一天。由于 YearMonth.range(ChronoField.MONTH_OF_YEAR)
方法返回的是月份的天数,所以我们需要将该值加上月份的第一天再减去 1
,才能得到月份的最后一天。
YearMonth
的 range()
方法可以方便地获取某一年份或月份的范围,即该年份的第一天和最后一天日期。通过该方法,可以方便地计算该年份或月份的各种日期。