2016년 7월 25일 월요일

Java Programming [49강] Calendar클래스 사용하기 (1) : 요일 출력하기

오늘은 Calendar클래스에서 요일을 출력하는 방법을 실습하겠습니다.
Calendar클래스의 객체는 단 하나만 생성해서 사용하는 싱글톤 패턴입니다. 시간 정보는 여러개 생성해서 쓸 필요가 없고 그렇게 쓰면 오히려 혼선이 빚어지기 때문입니다.

Calendar클래스의 객체를 활용하여 요일을 출력해봅시다.




이렇게 Calendar클래스의 객체를 생성해 객체 cal을 출력해보면 아래와 같은 그레고리안 캘린더 형식으로 출력됩니다.

java.util.GregorianCalendar[time=1469499084841,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=2016,MONTH=6,WEEK_OF_YEAR=31,WEEK_OF_MONTH=5,DAY_OF_MONTH=26,DAY_OF_YEAR=208,DAY_OF_WEEK=3,DAY_OF_WEEK_IN_MONTH=4,AM_PM=0,HOUR=11,HOUR_OF_DAY=11,MINUTE=11,SECOND=24,MILLISECOND=841,ZONE_OFFSET=32400000,DST_OFFSET=0]


이것이 의미하는 것을 하나하나 살펴보겠습니다. (다 살펴보지 말고 필요한 것만..)
일단 대문자가 시작되는 ERA부터 보겠습니다. 기원전 기원후를 구분하는 표시입니다. 1이므로 AD(기원후)입니다. YEAR는 년도, MONTH는 0부터 시작해 7월이면 6입니다. WEEK OF YEAR은 한 해에서 31번째 주라는 의미고 WEEK OF MONTH는 그 달에서 5번째 주, DAY_OF_MONTH는 그 달에서 26번째 날, DAY_OF_YEAR은 그 해에서 208번째 날, DAY_OF_WEEK은 요일로, 특이하게도 인덱스가 1부터 시작합니다. 따라서 1은 일요일, 2는 월요일, 3은 화요일, 7은 토요일 순입니다. DAY_OF_WEEK_IN_MONTH는 해당 요일이 그 달에 몇번 있는지, 즉 여기서는 DAY_OF_WEEK이 화요일이므로 화요일이 7월 중에 몇번 있는지를 표시합니다. AM_PM은 오전오후로 0은 오전이고 그 다음부터는 시간, 하루중 시간, 분, 초, 등등 입니다.

원래 이런 시간 정보를 가져 오려면 cal.get(index)에 index자리에 1,2,3을 매개변수로 넣어, 1에 대응되는 YEAR정보, 2에 대응되는 MONTH정보 등을 가져옵니다. 그러나 이렇게 하면 인덱스와 대응되는 정보를 모두 외워야 하므로 너무 번거롭고 불편합니다.
따라서 자바에서는 상수에 이름을 붙여 YEAR, MONTH이런식으로 정보를 부를 수 있습니다.
다음의 실습을 통해 Calendar클래스를 사용해 요일을 출력해봅니다.




댓글 없음:

댓글 쓰기