万年历星期差的计算
发表在C语言图书答疑 2013-10-26
是否精华
版块置顶:
[font color=#0000[font size=3][/font]00]计算星期差的模块,看不懂啊,就大神解释。
  if (year==2000)
   {
   dy=0; /*年引起的星期差为0个*/
   m2=1; /*2月引起的星期差为1个*/
   goto la_100;
   }
   if (year>2000)
   d=(year-1-2000)/4-(year-1-2000)/100+(year-1-2000)/400+1;
   else 
   d=(year-2000)/4-(year-2000)/100+(year-2000)/400;
   dy=(year-2000)+d;     /*** 该年 1月1号 到2000年1月1号的 " 星期差 " ***/
   if((year%4==0&&year%100!=0)||(year%100==0&&year%400==0))
    m2=1; 
   else 
   m2=0;  /*** 该年是否润 ***/
la_100:                    /**** la_100 ****/
          /*** 该月以前的月所引起的 " 星期差 " ***/
   switch (month)
    {[font size=3][/font]
     case 1: dm=0; month=31; break;   /*** month 在此存放该月天数 ***/
     case 2: dm=3; month=d==1? 29:28; break;
     case 3: dm=3+m2; month=31; break;
     case 4: dm=6+m2; month=30; break;
     case 5: dm=1+m2; month=31; break;
     case 6: dm=4+m2; month=30; break;
     case 7: dm=6+m2; month=31; break;
     case 8: dm=2+m2; month=31; break;
     case 9: dm=5+m2; month=30; break;
     case 10: dm=m2; month=31; break;
     case 11: dm=3+m2; month=30; break;
     case 12: dm=5+m2; month=31; break;
    }[font color=#0000FF][/font][/font]
分享到:
精彩评论 1
cui_mrkj
学分:0 LV1
TA的每日心情
?
2020-08-20 13:57:19
2013-11-01
沙发
主要原理:
2000年1月1日是星期六,以此为原点,向前数一天是星期五,数两天是星期四,三天是星期三。。。依次类推
以此为原点,向后数一天是星期日,向后数两天是星期一,数三天是星期二。。。依次类推

算出当前日期到这个原点的时间,过了一星期就又回到了星期六,去掉整数个星期,剩下的不够整星期的天数依次向后排,就能得出是星期几。
中间计算时间的时候需要判断闰年平年等情况,天数不一样。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照