📜  java ultimo dia del mes - Java (1)

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

Java-如何获取某年某月的最后一天

在Java中,获取某一年或月的最后一天是一个常见的需求。下面将介绍几种获取最后一天的方式。

方法一:使用java.util.Calendar

java.util.Calendar类是Java日期操作的基础类,它提供了很多日期时间操作的方法,其中就包括计算某月最后一天的方法。代码如下:

import java.util.Calendar;
public class JavaGetLastDayOfMonth {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.YEAR, 2021);
        calendar.set(Calendar.MONTH, 1); // February
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
        System.out.println(lastDay);
    }
}

这段代码首先创建了一个Calendar实例,并通过set()方法设置了年份和月份,然后调用了getActualMaximum()方法计算此月的最后一天,最后输出结果。

运行结果为:28

方法二:使用java.time.LocalDate

在Java 8中,新增了一组标准日期时间API(java.time.*),其中包括了更为简洁的方式获取某月的最后一天。代码如下:

import java.time.LocalDate;
public class JavaGetLastDayOfMonth {
    public static void main(String[] args) {
        int lastDay = LocalDate.of(2021, 2, 1).lengthOfMonth();
        System.out.println(lastDay);
    }
}

这段代码使用了LocalDate.of()方法指定年份和月份,然后调用lengthOfMonth()方法获取该月的最后一天,最后输出结果。

运行结果为:28

方法三:使用org.apache.commons.lang3.time.DateUtils

org.apache.commons.lang3.time包是Apache Commons Lang库中的一个日期时间操作工具包,提供了很多常用的日期时间操作方法,其中包括计算某月最后一天的方法。代码如下:

import org.apache.commons.lang3.time.DateUtils;
import java.util.Date;
public class JavaGetLastDayOfMonth {
    public static void main(String[] args) {
        Date date = new Date();
        Date lastDay = DateUtils.addMonths(DateUtils.truncate(date, Calendar.MONTH), 1);
        lastDay = DateUtils.addDays(lastDay, -1);
        System.out.println(lastDay.getDate());
    }
}

这段代码使用了DateUtils.addMonths()方法增加一个月,并使用DateUtils.truncate()方法截去天数部分,最后使用DateUtils.addDays()方法减去一天获取该月的最后一天,最后输出结果。

运行结果为:28

总结:

以上就是获取某一年或月的最后一天的三种常用方法。使用java.util.Calendar的方法具有通用性,但代码较为冗长;使用java.time.LocalDate的方式简洁又有效,但要求使用JDK1.8及以上版本;同样适用于JDK1.6及以上版本的org.apache.commons.lang3.time.DateUtils具有跨版本兼容性,但需要引入相关依赖库。