Study/Programming

특정 날짜로 요일 계산하는 공식

빨간당무 2015. 6. 3. 02:44

특정 날짜로 요일 계산하는 공식


Input :

int year;    // 년

int month;    // 월

int day;    // 일

Output :

int week;    // 0~6사이로 각각 일월화수목금토 를 가리킴

Code :

if (month == 1 || month == 2) {

year--;

}

int a = (month + 9) % 12 + 1;

int b = year % 100;

int c = year / 100;        // 소수점 이하 버림

int week = ( ((13 * a - 1) / 5) + day + b + (b / 4) + (c / 4) - (2 * c) ) % 7;

if (week < 0) {

week = (week + 7) % 7

}

return week;


example:

year = 2015

month = 6

day = 3

a = 4

b = 15

c = 20

week = ( ((13 * 4 - 1) / 5) + 3 + 15 + (15 / 4) + (20 / 4) - (2 * 20) ) % 7

week = 3        // 3 -> 수


reference: http://levin01.tistory.com/329