圣源电子制作

 找回密码
 立即注册
查看: 6539|回复: 1

计算2000~2099年任一天星期几-计算方式-C程序

[复制链接]
发表于 2012-1-20 03:13:04 | 显示全部楼层 |阅读模式
转载自互联网!!!

  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. }  
复制代码

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

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



回复

使用道具 举报

 楼主| 发表于 2012-1-20 03:16:20 | 显示全部楼层
又有新的 计算方式
适用与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. }
复制代码
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|联系我们|闽公网安备 35012102000020号|圣源电子 ( 闽ICP备11020110号 )

GMT+8, 2024-3-29 18:13 , Processed in 0.047945 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表