Develop/JAVA

[Java] 특정 달의 마지막 날짜와 요일 구하기

issuemaker99 2025. 2. 19. 13:31
728x90

1. YearMonth을 활용한 방법 (Java 8 이상)

Java 8 이상에서는 java.time 패키지를 활용하면 간단하게 특정 달의 마지막 날짜와 요일을 구할 수 있습니다.

import java.time.DayOfWeek;
import java.time.YearMonth;
import java.time.LocalDate;

public class LastDayOfMonthExample {
    public static void main(String[] args) {
        int year = 2024;
        int month = 2; // 2월

        // YearMonth 객체 생성
        YearMonth yearMonth = YearMonth.of(year, month);

        // 해당 월의 마지막 날짜 가져오기
        int lastDay = yearMonth.lengthOfMonth();

        // LocalDate로 변환하여 요일 가져오기
        LocalDate lastDate = yearMonth.atEndOfMonth();
        DayOfWeek dayOfWeek = lastDate.getDayOfWeek();

        // 출력
        System.out.println(year + "년 " + month + "월의 마지막 날짜: " + lastDay);
        System.out.println("해당 날짜의 요일: " + dayOfWeek);
    }
}

 

2. Calendar 클래스를 활용한 방법 (Java 8 미만)

Java 8 이전 버전에서는 Calendar 클래스를 사용해야 합니다.

import java.util.Calendar;

public class LastDayOfMonthWithCalendar {
    public static void main(String[] args) {
        int year = 2024;
        int month = 2; // 2월 (주의: Calendar의 month는 0부터 시작)

        Calendar calendar = Calendar.getInstance();
        calendar.set(year, month - 1, 1); // 월을 0부터 시작하기 때문에 -1 해줌
        int lastDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

        // 마지막 날짜의 요일 구하기
        calendar.set(Calendar.DAY_OF_MONTH, lastDay);
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);

        // 요일을 문자열로 변환
        String[] weekDays = {"", "일", "월", "화", "수", "목", "금", "토"};
        String dayOfWeekStr = weekDays[dayOfWeek];

        // 출력
        System.out.println(year + "년 " + month + "월의 마지막 날짜: " + lastDay);
        System.out.println("해당 날짜의 요일: " + dayOfWeekStr + "요일");
    }
}

 

실행 결과 (2024년 2월 기준)

2024년 2월의 마지막 날짜: 29
해당 날짜의 요일: 목요일

 

  • Java 8 이상: YearMonth와 LocalDate를 활용하는 것이 간결하고 직관적.
  • Java 8 미만: Calendar 클래스를 활용하여 마지막 날짜와 요일을 구할 수 있음.
LIST