战舰RTC实验中,已知年月日,怎样求星期号???

2019-10-15 07:50发布

/**函数名   RTC_Get_Week()
  *功能       输入公历日期得到星期(只允许1901-2099年)
  *参数      公历年月日
  *返回值    星期号
               0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六
  */                                                                                                                                                                         
u8 RTC_Get_Week(u16 year,u8 month,u8 day)        
{       
        u16 temp2;                                                                                                                                               
        u8 yearH,yearL;                           
       
        yearH=year/100;        yearL=year%100;   
        // 如果为21世纪,年份数加100  
        if (yearH>19)yearL+=100;
        // 所过闰年数只算1900年之后的  
        temp2=yearL+yearL/4;
        temp2=temp2%7;
        temp2=temp2+day+table_week[month-1];
        if (yearL%4==0&&month<3)temp2--;
        return(temp2%7);
}                          

网上有说,在已知年月日的情况下,通过蔡勒公式可以求得星期号。但实验例程中,好像不是。原子哥能不能解释一下上边函数的实现原理???


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
南有乔木
1楼-- · 2019-10-15 12:24
帮顶。
CallMeWater
2楼-- · 2019-10-15 13:58
 精彩回答 2  元偷偷看……
hlz1490781325
3楼-- · 2019-10-15 14:27
CallMeWater 发表于 2017-1-9 09:00
基姆拉尔森计算公式也可以根据日期计算星期几
http://baike.so.com/doc/2738265-2890169.html

恩恩,我就是好奇战舰的例程中,给出的是什么方法,硬是没看明白
hlz1490781325
4楼-- · 2019-10-15 20:26
南有乔木 发表于 2017-1-8 22:42
帮顶。

谢谢,你对上边的程序有研究吗?
南有乔木
5楼-- · 2019-10-15 21:03
hlz1490781325 发表于 2017-1-11 10:20
谢谢,你对上边的程序有研究吗?

不明白,我确定星期的办法是 已知初始的设定日期了,比如1970年1月1日。把1970年1.1到今天的总天数算出来,每周7天,把总天数除以7取余。余数为0~6,对应的星期为周4、周5、周6、周天、周一、周二、周三~~~

这样确定的。。循环的天数直接全部去掉就行了~~
南有乔木
6楼-- · 2019-10-16 01:52
南有乔木 发表于 2017-1-11 10:38
不明白,我确定星期的办法是 已知初始的设定日期了,比如1970年1月1日。把1970年1.1到今天的总天数算出来 ...

因为1970.1.1是周四~~~

一周热门 更多>