高级会员
- 积分
- 680
- 金钱
- 680
- 注册时间
- 2019-5-18
- 在线时间
- 101 小时
|
// 星期判定,2000.1.1(星期六)为基准,对以后100年内,星期是有效的。即(2000~2100)
unsigned char setWeek(unsigned char TIME6,unsigned char TIME4,unsigned char TIME3)
{
unsigned char code table[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
unsigned char j=0, wk=0; // j 用于记录从2000年到你设定的那一年(不包括你设定的年)之间有几个闰年,wk 用于存放你求出的星期几
unsigned int sum=0, i, allyear; // sum 用于存放从2000年到你设定的那一年一共有多少天,sum最大到65535
allyear = year*100 + TIME6; // 这里的year是你设定年的前两位,TIME6是后两位
sum = TIME3;
for(i=0;i<TIME4;i++)
{
sum += table[i];
}
if((allyear%4==0)&&(allyear%100!=0)||(allyear%400==0))
{
if(TIME4 > 2)
sum++;
}
for(i=2000;i<allyear;i++)
{
if((i%4==0)&&(i%100!=0)||(i%400==0))
j++;
}
if(allyear >1999 && allyear < 2101) // 确保不超出设定的范围2000~2100
sum = sum + (allyear-2000)*365 + j + 5; // 5是由基准星期6-1得到
wk = sum%7;
if(wk==0)
wk = 7;
return wk;
}
|
|