已知日期,算改日是星期几

已知日期,算改天是星期几?
我的思想是这样的:
    以公元0年1月1日星期天为基准,算出要求的日期与该日期的天数差,然后再对7求模。

 余数为0:  星期天
 余数为1:  星期一
 余数为2:  星期二
 余数为3:  星期三
 余数为4:  星期四
 余数为5:  星期五


但是这个程序算出来的的星期数总会比当前星期数多1,麻烦各位帮我看看,谢谢。


#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<time.h>
#include<Windows.h>
 
int leapyear(int year)
{
int flag = 0;

if (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0))
    {
        flag = 1;
    }

return flag;
}

int tianshu(int year, int month, int day)
{
int thisYearFlag = 0;
int totalDay = 0;
int beforeYearDay = 0;
int thisYearDay = 0;
int i = 0;

for (i = 0; i < year; i++)
{
int yearFlag = leapyear(i);

if(1 == yearFlag)
{
beforeYearDay += 366;
}

else
{
beforeYearDay += 365;
}
}
 
    switch (month - 1)
    {
        case 1:
            thisYearDay = 31;
            break;
 
        case 2:
            thisYearDay = 31 + 28;
            break;
 
        case 3:
            thisYearDay = 31 + 31 + 28;
            break;
 
        case 4:
            thisYearDay = 30 + 31 + 31 + 28;
            break;
 
        case 5:
            thisYearDay = 31 + 30 + 31 + 31 + 28;
            break;
 
        case 6:
            thisYearDay = 30 + 31 + 30 + 31 + 31 + 28;
            break;
 
        case 7:
            thisYearDay = 31 + 30 + 31 + 30 + 31 + 31 + 28;
            break;
 
        case 8:
            thisYearDay = 31 + 31 + 30 + 31 + 30 + 31 + 31 + 28;