一:概述

在实际的开发应用中,需要去判断这个月的实际最大日。在这里将以不同的方法去实现获得当月的最大日。

二:具体说明

<1>使用Calendar类进行实现

public static void main(String[] args) {
        // 获取当月的最大日
        int maxDay = getMaxDayOfMonth();
        System.out.println("当月最大日:" + maxDay);

    }
    public static int getMaxDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        return calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    }
}

常见的方法是使用Java的Calendar类来获取当月最大日。Calendar类提供了getActualMaximum()方法,可以用于获取指定字段的最大值。我们可以通过将字段设置为Calendar.DAY_OF_MONTH来获取当月的最大日。

使用Calendar.getInstance()获取当前日期的Calendar实例,然后调用getActualMaximum(Calendar.DAY_OF_MONTH)来获取当月的最大日。

java获取当月最大日_System

<2>使用YearMonth类实现

Java 8引入了YearMonth类,它提供了方便的方法来处理年份和月份。我们可以使用YearMonth类的lengthOfMonth()方法来获取当月的最大日。

public static void main(String[] args) {
        int maxDay = getMaxDayOfMonth();
        System.out.println("当月最大日:" + maxDay);


    }

    public static int getMaxDayOfMonth() {
        YearMonth yearMonth = YearMonth.now();
        return yearMonth.lengthOfMonth();
    }

java获取当月最大日_System_02

使用YearMonth.now()获取当前年份和月份的YearMonth实例,然后调用lengthOfMonth()方法来获取当月的最大日。

<3>使用java.time库中的LocalDate类

Java 8引入了java.time库,其中的LocalDate类提供了方便的日期操作方法。我们可以使用LocalDate类的lengthOfMonth()方法来获取当月的最大日。

 public static void main(String[] args) {
        int maxDay = getMaxDayOfMonth();
        System.out.println("当月最大日:" + maxDay);
        
    }

    public static int getMaxDayOfMonth() {
        LocalDate currentDate = LocalDate.now();
        return currentDate.lengthOfMonth();
    }

java获取当月最大日_java_03

<4>使用java.util.Calendar类的Date对象

使用Calendar类的getActualMaximum(Calendar.DATE)方法来获取当月的最大日。

public static void main(String[] args) {
        int maxDay = getMaxDayOfMonth();
        System.out.println("当月最大日:" + maxDay);
    }

    public static int getMaxDayOfMonth() {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DATE));
        Date lastDayOfMonth = calendar.getTime();
        calendar.setTime(lastDayOfMonth);
        return calendar.get(Calendar.DAY_OF_MONTH);
    }

在上面的示例中,我们首先获取Calendar实例,然后将DAY_OF_MONTH字段设置为最大值,再通过getTime()方法获取最后一天的Date对象。接着将Date对象重新设置给Calendar实例,最后通过get(Calendar.DAY_OF_MONTH)获取当月的最大日。

java获取当月最大日_System_04

<5>实际案例实现

假设我们需要编写一个程序,要求用户输入一个日期,并输出该日期所在月份的最大日。

 public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("请输入日期(格式:YYYY-MM-DD):");
        String input = scanner.nextLine();

        LocalDate date = LocalDate.parse(input);

        int maxDay = getMaxDayOfMonth(date);
        System.out.println("该日期所在月份的最大日:" + maxDay);
        scanner.close();
    }
    public static int getMaxDayOfMonth(LocalDate date) {
        YearMonth yearMonth = YearMonth.from(date);
        return yearMonth.lengthOfMonth();
    }

java获取当月最大日_java_05