BAEL-6597: How to get the last Day of the Month in Java (#14191)

This commit is contained in:
Azhwani 2023-06-26 14:05:24 +02:00 committed by GitHub
parent e2976f0686
commit 8e6bdc0205
2 changed files with 72 additions and 0 deletions

View File

@ -0,0 +1,32 @@
package com.baeldung.lastdaymonth;
import java.time.LocalDate;
import java.time.YearMonth;
import java.time.temporal.TemporalAdjusters;
import java.util.Calendar;
public class LastDayOfMonth {
static int getLastDayOfMonthUsingCalendar(int month) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, month);
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
static int getLastDayOfMonthUsingTemporalAdjusters(LocalDate date) {
return date.with(TemporalAdjusters.lastDayOfMonth())
.getDayOfMonth();
}
static int getLastDayOfMonthUsingYearMonth(YearMonth date) {
return date.atEndOfMonth()
.getDayOfMonth();
}
static int getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate date) {
return date.dayOfMonth()
.withMaximumValue()
.getDayOfMonth();
}
}

View File

@ -0,0 +1,40 @@
package com.baeldung.lastdaymonth;
import static org.junit.jupiter.api.Assertions.assertEquals;
import java.time.LocalDate;
import java.time.YearMonth;
import org.junit.jupiter.api.Test;
class LastDayOfMonthUnitTest {
@Test
void givenMonth_whenUsingCalendar_thenReturnLastDay() {
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingCalendar(0));
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingCalendar(3));
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingCalendar(9));
}
@Test
void givenMonth_whenUsingTemporalAdjusters_thenReturnLastDay() {
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 1, 1)));
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 4, 1)));
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 10, 1)));
}
@Test
void givenMonth_whenUsingYearMonth_thenReturnLastDay() {
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 1)));
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 4)));
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 10)));
}
@Test
void givenMonth_whenUsingJodaTime_thenReturnLastDay() {
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-1-1")));
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-4-1")));
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-10-1")));
}
}