Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 특정 연도의 한 달 일수를 구하는 방법

GregorianCalendarCalendar 클래스의 구체적인(concrete) 하위 클래스로, 전 세계 대부분의 국가에서 사용하는 표준 달력 시스템을 제공합니다. Java에서 GregorianCalendar는 그레고리력(Gregorian calendar)과 율리우스력(Julian calendar)을 모두 처리할 수 있습니다.

특정 연도의 특정 월이 며칠까지 있는지 확인하려면 GregorianCalendar 클래스의 getActualMaximum() 메서드를 사용하면 됩니다. 이 메서드는 지정한 달력 필드가 실제로 가질 수 있는 최댓값을 반환합니다. 예를 들어 윤년인지 아닌지에 따라 2월의 최대 일수가 29일 또는 28일로 자동 계산되므로, 복잡한 윤년 판별 로직을 직접 작성할 필요가 없습니다. 메서드의 매개변수에는 Calendar 클래스에 정의된 어떤 필드든 전달할 수 있습니다.

문법(Syntax)

public int getActualMaximum(int field)

예제 코드(Example)

아래 예제는 2000년부터 2017년까지 각 연도의 2월이 며칠인지 출력합니다.

import java.util.*;
public class NoOfDaysInAMonthOfAYearTest {
    public static void main(String []args) {
        for (int i = 2000; i < 2018; i++) {
            Calendar calendar = new GregorianCalendar(i, Calendar.FEBRUARY, 1);
            int numberOfDays = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);
            System.out.println("February " + i + ": " + numberOfDays + " days");
        }
    }
}

실행 결과(Output)

February 2000: 29 days
February 2001: 28 days
February 2002: 28 days
February 2003: 28 days
February 2004: 29 days
February 2005: 28 days
February 2006: 28 days
February 2007: 28 days
February 2008: 29 days
February 2009: 28 days
February 2010: 28 days
February 2011: 28 days
February 2012: 29 days
February 2013: 28 days
February 2014: 28 days
February 2015: 28 days
February 2016: 29 days
February 2017: 28 days

실행 결과를 보면 2000년, 2004년, 2008년, 2012년, 2016년처럼 4로 나누어 떨어지는 해(윤년)에는 2월이 29일로 계산되고, 나머지 해에는 28일로 계산되는 것을 확인할 수 있습니다. 이처럼 getActualMaximum(Calendar.DAY_OF_MONTH)를 활용하면 연도와 월에 상관없이 정확한 말일 날짜를 손쉽게 얻을 수 있습니다.