圣源电子制作

标题: 计算2000~2099年任一天星期几-计算方式-C程序 [打印本页]

作者: sydz    时间: 2012-1-20 03:13
标题: 计算2000~2099年任一天星期几-计算方式-C程序
转载自互联网!!!

  1. // 计算2000~2099年任一天星期几
  2. // year    : 00-99
  3. // month: 01-12
  4. // day     : 01-31
  5. unsigned char GetWeekFromDay(unsigned char year,unsigned char month,unsigned char day)
  6. {
  7.     if( month == 1 || month == 2 )   
  8.     {
  9.         month += 12;
  10.         if( year> 0 )
  11.             year--;
  12.         else
  13.             year = 4;
  14.     }

  15.     // 返回星期几(星期一用1表示,而星期天用7表示)
  16.     return 1+(( day + 2*month + 3*(month+1)/5 + year + year/4 ) %7);
  17. }  
复制代码

试了几个日期算了下 都对的。
感觉好神奇。

年月日星期之间都应该有规律的吧
有没有强人 能分析下  年 月 日 星期 之间的数学关系啊




作者: sydz    时间: 2012-1-20 03:16
又有新的 计算方式
适用与51单片机
  1. //51的话,可以定义在CODE,不光省RAM,还节省代码空间(少一条MOV指令)。
  2. //这里0代表星期天,使用者应该加上日前限定的功能。   
  3. uchar      WeekData[]={0,3,3,6,1,4,6,2,5,0,3,5};   
  4. /*2000-2099*/   
  5. unsigned  char  GetWeekDay(unsigned  char  year,unsigned  char  month,unsigned  char  day)   
  6. {   
  7.       return      ((6+WeekData[month-1]+year+day+year/4)%7);   
  8. }
复制代码





欢迎光临 圣源电子制作 (https://bbs.syyyd.com/) Powered by Discuz! X3.4