当前位置:首页 > 单片机 > 单片机
[导读]#include#define uint unsigned int #define uchar unsigned charuchar code monthday[]={31,28,31,30,31,30,31,31,30,31,30,31}; uchar month_n_day(uint y,uchar m) //算出某年某月有多少天 { if(m==2) r

#include

#define uint unsigned int
#define uchar unsigned char

uchar code monthday[]={31,28,31,30,31,30,31,31,30,31,30,31};

uchar month_n_day(uint y,uchar m) //算出某年某月有多少天
{
if(m==2)
return(((y%4 == 0) && (y%100 != 0) || (y%400 == 0))? 29: 28);
else
return(monthday[m-1]);
}

//************************************************
uchar week(uint y,uchar m,uchar d) //计算某年某月某日是星期几(1900年开始)
{
long nday=0;
uint i;


for (i=1900;i nday =nday+(((i%4 == 0) && (i%100 != 0) || (i%400 == 0))? 366: 365);
for (i=1;i nday=nday+month_n_day(y,i);
nday=nday+d;

return(nday%7);
}

void main()
{
ucharweek1,week2,week3,week4;
uint aa1,aa2,aa3,aa4;
aa1=10;
aa1=aa1+2000;

week1=week(aa1,11,2);//week1为计算出来的星期几。
while(1)
{
;
}
}

//说明:

如计算2010年12月05日是星期几:假设 uchar year,month,day;

year=0x10; //年份:10年
month=0x12; //月份:12月

day=0x05; //日: 05日

则星期为:week1=week((year>>4)*10+(year&0x0f)+2000,(month>>4)*10+(month&0x0f),(day>>4)*10+(day&0x0f));

注:此式只能计算2000年到2099年的星期。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭