안드로이드 자바 Calendar.DAY_OF_WEEK은 어디에 쓰이는가?

프로그래밍/Android 관련2018. 2. 20. 19:54

안녕하세요. 드리머즈입니다.


Calendar내에 정의된 상수로 DAY_OF_WEEK이라는 게 있습니다. 아래의 구글 디벨로퍼 사이트에 설명이 있긴 하지만 저는 이해가 안되더라구요.

https://developer.android.com/reference/java/util/Calendar.html#DAY_OF_WEEK


직접 테스트를 해봤습니다.

1
2
3
4
5
6
7
8
    int dayOfMonth;
    Calendar calendar = Calendar.getInstance();
 
    for(int i=0; i<60; i++) {
        dayOfMonth = calendar.get(Calendar.DAY_OF_WEEK);
        calendar.add(Calendar.DATE, 1); //1일 더하기
        Log.d("CalendarTest""dayOfMonth = " + dayOfMonth);
     }
cs

Calendar 객체는 달력을 표현하는데 특화된 시간에 관련된 내용을 담고있는 클래스입니다.

Calendar.getInstance()를 통해 현재의 시간을 가져옵니다. 그러면 calendar는 현재 시간에 해당하는 정보를 담고 있습니다.


오늘로 치면 2018년 2월 20일 x시 x분 xx초를 의미하는 값을 가지고 있을 겁니다. 이런 calendar객체에 calendar.get(Calendar.DAY_OF_WEEK)이라고 하면 어떤 값을 리턴하는지 알기 위해 테스트했습니다. for문을 돌려 calendar에 1일씩 값을 증가시키면서 calendar.get(Calendar.DAY_OF_WEEK)의 값을 확인해봤습니다.


02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 3

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 4

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 5

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 6

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 7

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 1

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 2

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 3

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 4

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 5

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 6

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 7

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 1

02-20 10:37:52.468 31640-31640/com.dreamaz.gridviewcalendartest D/CalendarTest: dayOfMonth = 2

(...생략...)



3부터 시작해서 7까지 증가했다가 1부터 시작하여 7까지 됐다가 1에서 다시 시작하는 값을 반환하는 동작을 반복하고 있습니다.

1부터 시작해서 7까지의 값을 가진다라 뭔가 감이 오지 않습니까?


참고로 오늘은 화요일입니다.


위의 사진을 보면 확실히 이해가 될 것입니다.

calendar.get(Calendar.DAY_OF_WEEK)은 calendar가 가르키는(의미하는) 특정 날짜가 무슨 요일인지 알기 위해 쓰입니다. 

오늘이 2월 20일이고 화요일이기에 화요일을 의미하는 3을 리턴한 것입니다.


Calendar 내부에 요일을 나타내기 위해 정의된 상수가 있습니다.


Calendar.SUNDAY 1

Calendar.MONDAY 2

Calendar.TUESDAY 3

Calendar.WEDNESDAY 4

Calendar.THURSDAY 5

Calendar.FRIDAY 6

Calendar.SATURDAY 7


이 상수들을 이용하면 보다 쉽게 calendar.get(Calendar.DAY_OF_WEEK)의 값이 어떤 요일을 의미하는 지 알 수 있습니다.

제가 한 예제에서는 3을 리턴했으므로 Calendar.TUESDAY 즉 화요일인 것을 알 수 있습니다.


1
2
3
if(calendar.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY){
    //일요일
}
cs

코드로 보면 위와 같은 방식으로 사용 가능합니다.



참고로 영어사전에서 day를 찾아보니 "요일"이라는 의미도 있네요.

작성자

Posted by 드리머즈

관련 글

댓글 영역