Calendar 클래스는 Date 클래스와 마찬가지로 날짜와 시간을 다루는 클래스이다. Calendar 클래스가 새로 추가되면서 Date 대부분의 메소드는 deprecated 되어 잘 사용하지 않으나, 경우에 따라 Date 의 메소드를 그대로 사용하거나, 혹은 Calendar 클래스와 상호 변환하는 상황이 있다.
추상 클래스이기 때문에 직접 new 하여 객체 생성이 불가하고, Calendar.getInstance() 메소드를 이용하거나 Calendar 클래스를 상속받는 GregorianCalendar 클래스를 이용하여 객체를 생성할 수 있다.
Calendar today = Calendar.getInstance(); //객체 생성
import java.util.Calendar;
public class CalendarTest {
public static void main(String[] args) {
Calendar today = Calendar.getInstance();
int year =today.get(Calendar.YEAR);
System.out.println(today);
System.out.println(year);
System.out.println(today.get(Calendar.MONTH) + 1); //0~11 이기 때문에 + 1
System.out.println(today.get(Calendar.DATE));
System.out.println(today.get(Calendar.HOUR_OF_DAY));
System.out.println(today.get(Calendar.MINUTE));
System.out.println(today.get(Calendar.SECOND));
String []arr = {"일", "월", "화", "수", "목", "금", "토"};
System.out.println(arr[today.get(Calendar.DAY_OF_WEEK)-1] + "요일"); //1~7 이기 때문에 - 1
}
}
실행결과
java.util.GregorianCalendar[time=1661264122218,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=22,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2022,MONTH=7,WEEK_OF_YEAR=35,WEEK_OF_MONTH=4,DAY_OF_MONTH=23,DAY_OF_YEAR=235,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=11,HOUR_OF_DAY=23,MINUTE=15,SECOND=22,MILLISECOND=218,ZONE_OFFSET=32400000,DST_OFFSET=0]
2022
8
23
23
15
22
화요일
Calendar를 상속받기 때문에 생성자를 이용하면 객체 생성이 가능하다.
GregorianCalendar today = new GregorianCalendar(); //객체생성
isLeapYear 메소드를 사용하여 윤년을 확인할 수 있다.
if (today.isLeapYear(today.get(GregorianCalendar.YEAR)))
System.out.println("윤년입니다.");
else
System.out.println("윤년이 아닙니다.");