Java如何获取日期对象表示的月份长度?

以下示例显示如何获取由java.time.LocalDate和java.time.YearMonth对象表示的月份长度。这两个类都具有一种称为的方法lengthOfMonth(),该方法返回由这些日期对象表示的月的天数。

package org.nhooo.example.datetime;

import java.time.LocalDate;
import java.time.Month;
import java.time.YearMonth;

public class LengthOfMonth {
    public static void main(String[] args) {
        // 获取当前日期的月份长度。
        LocalDate date = LocalDate.now();
        System.out.printf("%s: %d%n%n", date, date.lengthOfMonth());

        // 获取年月组合值的月长
        // 由YearMonth对象表示。
        YearMonth yearMonth = YearMonth.of(2015, Month.FEBRUARY);
        System.out.printf("%s: %d%n%n", yearMonth, yearMonth.lengthOfMonth());

        // 重复一个过程,得到一年的一个月的时间
        // 期。
        for (int month = 1; month <= 12; month++) {
            yearMonth = YearMonth.of(2010, Month.of(month));
            System.out.printf("%s: %d%n", yearMonth, yearMonth.lengthOfMonth());
        }
    }
}

main()上面的方法首先显示如何获取LocalDate对象的月份长度。首先,我们LocalDate使用LocalDate.now()静态工厂方法创建一个对象,该方法返回今天的日期。然后,在下一行上打印出今天日期的月份长度。

下一个代码段使用YearMonth该类。我们首先创建一个YearMonth代表2015年2月的对象。我们使用YearMonth.of()静态工厂方法创建了该对象。然后,我们打印出这些年月组合的月长。

在示例的最后几行中,我们创建了一个for循环,以获取2010年1月至12月的所有月份长度。

这是上面的代码片段的结果:

2015-07-17: 31

2015-02: 28

2010-01: 31
2010-02: 28
2010-03: 31
2010-04: 30
2010-05: 31
2010-06: 30
2010-07: 31
2010-08: 31
2010-09: 30
2010-10: 31
2010-11: 30
2010-12: 31