Q. Calendar 클래스 set, get에서 의아한 출력값 발생

NtoZ·2023년 3월 26일
0

Java

목록 보기
20/23
post-thumbnail

문제 상황

  • 문제
public static void main(String[] args) {
        // 달력 객체 생성하여 cal에 저장, SimpleDateFormat객체 생성하여 df에 저장
        Calendar cal = Calendar.getInstance();
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); //⭐MM이 달이고 mm이 분이다. 헷갈리지 말자!

        //⭐ month는 0부터 배열이 시작한다.
        cal.set(2010, 0, 10);   //❓캘린더 객체의 날짜 정보를 세팅
        Date date = new Date(cal.getTimeInMillis()); //💡cal.getTimeInMillis()를 통해 Calendar를 Date 클래스로 변환해야함. DateFormat 클래스를 사용하기 위해서!

        //💡
        final String[] dayOfWeek = {"", "일", "월", "화", "수", "목", "금", "토"};


        System.out.println(df.format(date) +
        				//❓이상한 값 출력
                "은 " + cal.get(Calendar.WEEK_OF_MONTH)+"번째 "	//❓
                + dayOfWeek[cal.get(Calendar.DAY_OF_WEEK)] +"요일입니다.");
    }

❓❓해당 값에서
cal.set(2010, 0, 10); //❓캘린더 객체의 날짜 정보를 세팅을 했음에도 불구하고,
cal.get(Calendar.WEEK_OF_MONTH)+"번째 " //❓ 여기서 3이라는 값이 출력된다. 2010년 1월 10일은 사실 2째주 이므로, 값 출력이 잘못 되었다. 이유가 무엇일까?

💡결론

  • 결론부터 말하자면 개념을 잘못 알고 있었다.
    WEEK_OF_MONTH는 날짜를 기준으로 몇 주차인지 알려주는 멤버이다.
    DAY_OF_WEEK_IN_MONTH가 '몇 번째 요일'인지 그 정보를 담고있다.
profile
9에서 0으로, 백엔드 개발블로그

0개의 댓글