Skip to content

Commit 8e6bdc0

Browse files
authored
BAEL-6597: How to get the last Day of the Month in Java (#14191)
1 parent e2976f0 commit 8e6bdc0

2 files changed

Lines changed: 72 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
package com.baeldung.lastdaymonth;
2+
3+
import java.time.LocalDate;
4+
import java.time.YearMonth;
5+
import java.time.temporal.TemporalAdjusters;
6+
import java.util.Calendar;
7+
8+
public class LastDayOfMonth {
9+
10+
static int getLastDayOfMonthUsingCalendar(int month) {
11+
Calendar cal = Calendar.getInstance();
12+
cal.set(Calendar.MONTH, month);
13+
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
14+
}
15+
16+
static int getLastDayOfMonthUsingTemporalAdjusters(LocalDate date) {
17+
return date.with(TemporalAdjusters.lastDayOfMonth())
18+
.getDayOfMonth();
19+
}
20+
21+
static int getLastDayOfMonthUsingYearMonth(YearMonth date) {
22+
return date.atEndOfMonth()
23+
.getDayOfMonth();
24+
}
25+
26+
static int getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate date) {
27+
return date.dayOfMonth()
28+
.withMaximumValue()
29+
.getDayOfMonth();
30+
}
31+
32+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.baeldung.lastdaymonth;
2+
3+
import static org.junit.jupiter.api.Assertions.assertEquals;
4+
5+
import java.time.LocalDate;
6+
import java.time.YearMonth;
7+
8+
import org.junit.jupiter.api.Test;
9+
10+
class LastDayOfMonthUnitTest {
11+
12+
@Test
13+
void givenMonth_whenUsingCalendar_thenReturnLastDay() {
14+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingCalendar(0));
15+
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingCalendar(3));
16+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingCalendar(9));
17+
}
18+
19+
@Test
20+
void givenMonth_whenUsingTemporalAdjusters_thenReturnLastDay() {
21+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 1, 1)));
22+
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 4, 1)));
23+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingTemporalAdjusters(LocalDate.of(2023, 10, 1)));
24+
}
25+
26+
@Test
27+
void givenMonth_whenUsingYearMonth_thenReturnLastDay() {
28+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 1)));
29+
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 4)));
30+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingYearMonth(YearMonth.of(2023, 10)));
31+
}
32+
33+
@Test
34+
void givenMonth_whenUsingJodaTime_thenReturnLastDay() {
35+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-1-1")));
36+
assertEquals(30, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-4-1")));
37+
assertEquals(31, LastDayOfMonth.getLastDayOfMonthUsingJodaTime(org.joda.time.LocalDate.parse("2023-10-1")));
38+
}
39+
40+
}

0 commit comments

Comments
 (0)