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

Java GregorianCalendar 클래스로 날짜를 출력하는 4가지 방법

GregorianCalendar 클래스는 율리우스력(Julian)과 그레고리력(Gregorian) 같은 표준 달력 체계를 지원하는 자바의 대표적인 달력 클래스입니다. 이 클래스는 여러 종류의 생성자를 제공하기 때문에, 특정 날짜를 직접 지정하거나 로케일(Locale), 시간대(TimeZone)를 기준으로 객체를 생성할 수 있습니다.

아래 예제들을 통해 GregorianCalendar 클래스를 사용해 날짜를 출력하는 다양한 방법을 하나씩 살펴보겠습니다.

1. 연도, 월, 일을 직접 지정하여 날짜 출력하기

생성자에 연도(year), 월(month), 일(date) 값을 순서대로 전달하면 해당 날짜를 나타내는 GregorianCalendar 객체가 생성됩니다.

import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
    public static void main(String args[]){
        // GregorianCalendar 객체 생성
        GregorianCalendar cal = new GregorianCalendar(2018, 6, 27);
        System.out.println(cal);
        System.out.println("Date: "+cal.get(Calendar.DATE));
        System.out.println("Month: "+cal.get(Calendar.MONTH));
        System.out.println("Year: "+cal.get(Calendar.YEAR));
    }
}

출력 결과

java.util.GregorianCalendar[time=?,areFieldsSet=false,areAllFieldsSet=false,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Calcutta",offset=19800000,dstSavings=0,useDaylight=false,transitions=7,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=?,YEAR=2018,MONTH=6,WEEK_OF_YEAR=?,WEEK_OF_MONTH=?,DAY_OF_MONTH=27,DAY_OF_YEAR=?,DAY_OF_WEEK=?,DAY_OF_WEEK_IN_MONTH=?,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=?,ZONE_OFFSET=?,DST_OFFSET=?]
Date: 27
Month: 6
Year: 2018

참고: Calendar.MONTH 값은 0부터 시작합니다. 따라서 위 예제의 6은 실제로 7월을 의미합니다.

2. Locale 객체를 전달하여 날짜 출력하기

생성자에 Locale 객체를 매개변수로 전달하면 해당 지역 설정에 맞는 달력 규칙이 적용된 GregorianCalendar 객체가 생성됩니다.

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.Locale;
public class Test {
    public static void main(String args[]){
        Locale locale = new Locale("en", "IN");
        // GregorianCalendar 객체 생성
        GregorianCalendar cal = new GregorianCalendar(locale);
        System.out.println("Date: "+cal.get(Calendar.DATE));
        System.out.println("Month: "+cal.get(Calendar.MONTH));
        System.out.println("Year: "+cal.get(Calendar.YEAR));
    }
}

출력 결과

Date: 7
Month: 10
Year: 2020

3. TimeZone 객체를 전달하여 날짜 출력하기

생성자에 TimeZone 객체를 전달하면 지정한 시간대를 기준으로 현재 날짜가 계산됩니다. 아래 예제에서는 GMT+5:30 시간대를 사용했습니다.

import java.util.Calendar;
import java.util.GregorianCalendar;
import java.util.TimeZone;
public class Test {
    public static void main(String args[]){
        TimeZone timeZone = TimeZone.getTimeZone("GMT+5:30");
        // GregorianCalendar 객체 생성
        GregorianCalendar cal = new GregorianCalendar(timeZone);
        System.out.println("Date: "+cal.get(Calendar.DATE));
        System.out.println("Month: "+cal.get(Calendar.MONTH));
        System.out.println("Year: "+cal.get(Calendar.YEAR));
    }
}

출력 결과

Date: 7
Month: 10
Year: 2020

4. getInstance() 메서드로 날짜 출력하기

별도의 매개변수 없이 getInstance() 메서드를 호출하면 시스템의 기본 로케일과 시간대가 적용된 GregorianCalendar 객체를 손쉽게 얻을 수 있습니다.

import java.util.Calendar;
import java.util.GregorianCalendar;
public class Test {
    public static void main(String args[]){
        // GregorianCalendar 객체 생성
        GregorianCalendar cal = (GregorianCalendar) GregorianCalendar.getInstance();
        System.out.println("Date: "+cal.get(Calendar.DATE));
        System.out.println("Month: "+cal.get(Calendar.MONTH));
        System.out.println("Year: "+cal.get(Calendar.YEAR));
    }
}

출력 결과

Date: 7
Month: 10
Year: 2020

마무리

지금까지 GregorianCalendar 객체를 생성하는 네 가지 방법과 이를 활용한 날짜 출력 방법을 살펴보았습니다. 참고로 Java 8 이후에는 java.time 패키지의 LocalDate, LocalDateTime 등을 사용하는 것이 권장되지만, 레거시 코드나 기존 라이브러리와의 호환성을 위해 GregorianCalendar는 여전히 널리 활용되고 있습니다.