2015-03-14

가장 쉽게 요일 구하는 공식(연월일 정보만 알면 누구나 가능)

가장 쉽게 요일 구하는 공식(연월일 정보만 알면 누구나 가능)

연 월 일 정보만 가지고 그 날짜의 요일을 구할 수 있을까?

이미 여기까지 들어왔다면 수 많은 구글링을 통해 답을 얻었는지도 모른다.

그러나 인터넷에 떠도는 정보들이 이해가 안되고 계산해봐도 틀려서 온 거라면 반갑다.

본론으로 넘어가서 어려운 공식을 쉽게 풀어보자.

예제 출발.

2015-3-14. (블로그 포스팅한 날짜)

우선 연도 부터 따져보자

보통 많이 쓰는 지금이 21세기니까 2000년도의 연도 앞 두자리만 떼어내서 생각한다.

현재 2015 년이므로

20 떼어내고 뒤의 15 떼어내자.

20 , 15 이 두가지 숫자로 뭘 할 것인가?

앞의 20에 "21" 을 곱하자. 그러면 420이 나온다. 이 숫자를 4로 나누자.

4로 나누면 105가 나온다. (나머지는 잊어버려라. 필요도없다)

즉 우리가 현재 살고 있는 21세기의 연도 코드는 105다.

1900년대는 99다.

이 방법을 적용할 때 나누기 하기 싫다면 곱하기 5.25를 해도 좋다. (물론 소수점 이하는 필요없다)

즉 21세기의 연도 값은 20곱하기 5.25해도 똑같은 값이 나온다.

다음으로 15로 넘어가자 15는 연도 값이다.

연도는 곱하기 5 를 해주고 4로 나누면 끝이다.

나누고 곱하기 싫다면 그냥 곱하기 1.25만 해도 된다.

15년도의 코드값은 18이다.

아까 구한 값 105, 지금 구한 값 18 잘 기억하자.

다음은 월이다.

월은 공식을 적용해야하는데, 1,2월과 3월부터 12월까지를 따로 계산한다.

이것을 외워라.

1월 36
2월 39
3월 10 (여기부터 외우면 편하다.)
4월 13
5월 15 (3*5=15 이렇게 외우면 판하다)
6월 18 (3*6=18 이렇게 외우면 판하다)
7월 20
8월 23
9월 26
10월 28 (2+8=10 이렇게 외우면 편하다)
11월 31
12월 33

여기서 주의할 것은 1,2월 날짜를 구하려는 경우.

즉 2015-2-1 같은 날짜의 요일을 구할 때는

연도를 전년도로 계산해야한다.
2014년으로 계산해서 아까 구한 15가 아닌 14 곱하기 1.25를 해서 17이라는 숫자로 계산해야 2015년 2월의 요일을 구할 수 있다.

그리고 뒤의 날짜는 빼기 1만 하면 된다. -1

정리 해보면,

아까 구한
105 (연도 앞자리 20)
18 (15년도)
10 (3월의 값)
13 (14일 에서 -1 한 값이다. 만약 1일 경우 0이다.)

이 숫자를 모두 더한다

146이 나온다.

여기서 146 나누기 7 하면 나오는 나머지가 요일의 코드 값이다.

나머지는 6이다.

0 일요일 (영일)
1 월요일 (일월)
2 화요일 (이화)
3 수요일 (삼수)
4 목요일 (사목)
5 금요일 (오금)
6 토요일 (육토)

그래서 토요일이다.

2015-3-14일은

105+18+10+13=147 이 값을 7로 나눈 나머지가 6이 나와서 토요일이 정답이다.

105,99만 외우고 있어도 1900~2100년도 까지 연도 코드는 알고 있는 것이고

월 코드값 3월부터 10, 13, 15, 18, 20, 23, 26, 28, 31, 33, 36, 39

순서대로 외울 수 있으면 된다 어렵다면 3월이 10이라는 것만 기억하고,

주먹을 쥐고 튀어나온 손가락 뼈 마디를 통해 계산가능하다.

패턴이 보이는가.

3월은 10인데 4월로 넘어갈 때 3이 추가된다. 즉 31일까지 있는 달에서 그 다음달 30일만 있는 달로 넘어갈 때 3이 추가되고 30일만 있는 달에서 31일이 있는 달로 넘어갈 때 2가 추가된다. 즉 4월에서 5월로 넘어갈 때는 2가 추가된다. 5월에서 6월으로 넘어갈 때는 3이 추가되고.

계산 공식을 표현하면 이렇다.

[(21 * YY / 4) + (5 * yy / 4 ) + 26(MM+1) / 10 + dd - 1 ] mod 7 = 0 ~ 6 (일월화수목금토)

20 15 - 03  -  15
YY yy - MM - dd

만약 MM 이 2이하 라면 yy - 1 (전년으로 계산)

팁으로 둠스데이 공식도 알려준다.

4,6,8,10,12월의 둠스데이는 각 달의 숫자와 같은 날짜다.

즉 그 해 4월4일, 6월6일, 8월8일, 10월10일, 12월12일, 이 날짜의 요일은 서로 같다.

홀수 달은
5월은 9
7월은 11
9월은 5   ( 9와 5만 연상하면 된다)
11월은 7  (11과 7)

1월은 마지막(그러나 윤년인 해 에는 32일 즉 1월 31일 다음날이다)
2월은 마지막(평년은 28일 윤년은 29일)
3월은 0일(즉 2월의 마지막날) 또는 14일 이다.

둠스데이 기준 요일은

2000년도 기준으로 화요일이다. (Tuesday = Y Tue K = Y2K 연상하면 쉽다)

2001년은 수요일

2002년은 목요일

2003년은 금요일

2004년은 윤년이라 패턴이 바뀌어서 하루가 더 증가한다. 그래서 토요일이 아니라 일요일이다.

이런식으로 윤년인 해는 숫자가 밀려 요일이 하루 더 추가된다.

이 기본 정보만 알고 있어도 각 연도의 둠스데이 기준 요일을 알 수 있다.

예를 들어 2015년도의 둠스데이는 토요일이다.

그런데 6월 17일 요일을 구하고 싶다

6월 6일은 토요일이므로 17을 카운트해 보면 수요일이라는 것을 알 수 있다.

카운트를 쉽게 계산하는 법은 손가락으로 할 수 있다.

손가락을 자세히 보라. 그림이 엉성하지만...

손가락 마디를 보고 각 마디를 요일이라고 생각하고 계산하면 된다.

손톱은 한 꼭지점이라 생각하고,

일     월      화    
-----------------------
|        |        |       ( 0 ))     수
-----------------------
토     금      목

이렇게 돌면서 계산하면 0~6이 반복된다. 아까 6월 17일을 예를 들면

6월6일이 토요일 다음 마디는

6월7일 손가락 마디 [일] 그 다음 마디는 월 화 수 목 금 토 일 월 화 수

이렇게 빙글빙글 돌아가면서 세면 달력을 보듯이 쉽게 계산하여 구할 수 있는 것이다.




가장 쉽게 요일 구하는 공식(연월일 정보만 알면 누구나 가능)