#include <stdio.h>
/* Sun Mon Tue Wed Thu Fri Sat */
#if 0
/* http://suika.fam.cx/~wakaba/wiki/sw/n/%E3%83%84%E3%82%A7%E3%83%A9%E3%83%BC%E3%81%AE%E5%85%AC%E5%BC%8F */
int getYoubi(int year,int month,int day) {
int youbi;
if(month<=2)month+=12;
youbi=(year+year/4-year/100+year/400+(13*month+8)/5+day)%7;
return youbi;
}
#else
/* http://www004.upp.so-net.ne.jp/s_honma/doweek.htm */
int getYoubi(int year,int month,int day) {
int y1,y2;
int youbi;
if(month<=2)month+=12;
y1=year/100;y2=year%100;
youbi=(y2+y2/4+y1/4-2*y1+(13*(month+1))/5+day)%7;
return (youbi-1+7)%7;
}
#endif
int main(void) {
int i,j;
int count=0;
printf("%d\n",getYoubi(1900,1,1));
printf("%d\n",getYoubi(2012,12,29));
return 0;
}
今日の曜日は正しく求まっているのに、1900年1月1日の曜日はうまく求まりません。
(月曜日のはずなのに、火曜日とされている)
どちらの関数を使っても同じ出力になりました。
どこが悪いのでしょうか?
よろしくお願いします。