您的位置:

如何用LocalDate获取当月最后一天

一、介绍LocalDate

在Java 8中,引入了一种新的日期和时间API,其中包括 LocalDate。

LocalDate是Java 8中的一个新类,可以方便地处理日期,而不必考虑时区的问题。它没有时间和时区的概念,所以它仅处理日期。

二、获取当月最后一天的几种方法

可以使用LocalDate的withDayOfMonth()和lengthOfMonth()方法来获取当月最后一天。

1. withDayOfMonth()方法

LocalDate today = LocalDate.now();
LocalDate lastDay = today.withDayOfMonth(today.lengthOfMonth());
System.out.println(lastDay);

上述代码中,首先使用now()方法获取当前日期,然后使用withDayOfMonth()方法设置该日期为当月最后一天。使用lengthOfMonth()方法获取当月的天数。

这种方法的优点是代码简洁,缺点是需要创建一个LocalDate对象来获取当前日期。

2. 第二种方法 - 不使用withDayOfMonth()方法

LocalDate today = LocalDate.now();
LocalDate lastDay = today.plusMonths(1).withDayOfMonth(1).minusDays(1);
System.out.println(lastDay);

上述代码中,首先使用now()方法获取当前日期,然后使用plusMonths()方法获取下个月的第一天。

使用withDayOfMonth()方法将日期设置为第一天。然后使用minusDays()方法将日期减去一天,以获取当月的最后一天。

这种方法的优点是不需要创建额外的LocalDate对象,但是需要多次调用方法,代码可读性稍差。

三、如何将结果保存在一个列表中?

如果需要获取一年内每个月的最后一天,可以将结果保存在一个列表中。

List lastDays = new ArrayList<>();
LocalDate date = LocalDate.of(2021, 1, 1);
while (date.getYear() == 2021) {
    LocalDate lastDayOfMonth = date.withDayOfMonth(date.lengthOfMonth());
    lastDays.add(lastDayOfMonth);
    date = date.plusMonths(1);
}
System.out.println(lastDays);

  

上述代码中,首先创建一个空的ArrayList,然后使用while循环遍历该年的每个月。

在每个月中,使用withDayOfMonth()方法获取该月的最后一天,然后将它添加到列表中。

最后,使用plusMonths()方法将本月加上1个月。

四、总结

在这篇文章中,我们介绍了LocalDate的一些基本知识,并分享了两种获取当月最后一天的方法。

我们还展示了如何将结果保存在一个列表中,以获取一年内每个月的最后一天。

使用LocalDate可以方便处理日期,避免了时区等问题,因此非常实用。