万年カレンダーをプログラミングする場合、表示したい日付の曜日を知る必要があるよね。
曜日を求める関数があれば、それを使えば良いのだが、無ければ自作するしかない。

そんなときにお世話になるのが曜日鑑別法であり、最も有名なのがZeller(ツェラー)の公式である。

 w = (y + [y/4] - [y/100] + [y/400] + [(m*13+8)/5] + d)%7

%: 剰余演算子
[]: 床関数、ガウス関数
y: 西暦年
m: 月 ※但し、1月、2月は前年の13月、14月として代入する事
d: 日
w: 0=日, 1=月, 2=火, 3=水, 4=木, 5=金, 6=土

後は、使いたい言語に合わせて上記をプログラミングすることで、現行のグレゴリオ暦における曜日を求めてくれるのである。

例えば、Cならば、

int weekday(int y, int m, int d)
{
  y += (m-1)/12, m = (m-1)%12+1;
  if ( m < 3 ) y --, m += 12;
  return (y+y/4-y/100+y/400+(m*13+8)/5+d)%7;
}

といった感じである。