/*
作用:计算该日期是今年第几天
闰年的判断条件:
1、能被4整除,但不能被100整除
2、可以被400整除
*/
int CalculateCurDay(int y,int m,int d)
{
int nDays=0;
int Y[12]={31,0,31,30,31,30,31,31,30,31,30,31};
if( (y%400==0||(y%4==0&&y%100!=0)) )
Y[1]=29;
else
Y[1]=28;
for(int i=0;i<m-1;i++)
nDays+=Y[i];
nDays+=d;
return nDays;
}
//基姆拉尔森计算公式根据日期判断星期几(1-7)
int CalculateWeekDay(int y, int m,int d)
{
if(m==1||m==2){
m+=12;
y--;
}
int nWeek = (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
nWeek+=1;
return nWeek;
}
// 当前日期为当前年份周数
int GetWeekOrderOfDate(int y,int m,int d)
{
int nOtherDays = CalculateCurDay(y,m,d)-(8-CalculateWeekDay(y,1,1)); //第一周之外的时间
int nWeekNum;
if (nOtherDays > 0){
if ( nOtherDays % 7 == 0 )
nWeekNum = nOtherDays/7;
else
nWeekNum = nOtherDays/7 + 1;
return nWeekNum + 1;
}
else{
return 1;
}
}