OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3372|回复: 8

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

[复制链接]

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
发表于 2017-1-8 21:30:21 | 显示全部楼层 |阅读模式
5金钱
/**函数名   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);
}                          

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


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-1-8 22:42:59 | 显示全部楼层
回复

使用道具 举报

1

主题

35

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
318
金钱
318
注册时间
2016-10-17
在线时间
98 小时
发表于 2017-1-9 09:00:01 | 显示全部楼层
基姆拉尔森计算公式也可以根据日期计算星期几
http://baike.so.com/doc/2738265-2890169.html
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
 楼主| 发表于 2017-1-11 10:19:35 | 显示全部楼层
CallMeWater 发表于 2017-1-9 09:00
基姆拉尔森计算公式也可以根据日期计算星期几
http://baike.so.com/doc/2738265-2890169.html

恩恩,我就是好奇战舰的例程中,给出的是什么方法,硬是没看明白
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
 楼主| 发表于 2017-1-11 10:20:20 | 显示全部楼层

谢谢,你对上边的程序有研究吗?
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-1-11 10:38:11 | 显示全部楼层
hlz1490781325 发表于 2017-1-11 10:20
谢谢,你对上边的程序有研究吗?

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

这样确定的。。循环的天数直接全部去掉就行了~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2017-1-11 10:38:51 | 显示全部楼层
南有乔木 发表于 2017-1-11 10:38
不明白,我确定星期的办法是 已知初始的设定日期了,比如1970年1月1日。把1970年1.1到今天的总天数算出来 ...

因为1970.1.1是周四~~~
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

21

主题

387

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1043
金钱
1043
注册时间
2016-9-8
在线时间
213 小时
发表于 2017-1-11 13:54:34 | 显示全部楼层
UTC时间来算...........
shop60994719.taobao.com
回复

使用道具 举报

2

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
94
金钱
94
注册时间
2015-11-20
在线时间
22 小时
 楼主| 发表于 2017-1-15 10:00:11 | 显示全部楼层
密耳 发表于 2017-1-11 13:54
UTC时间来算...........

我查询了一下关于UTC方面的东西,仍然不太明白,你能不能详细说一下,先谢过
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-30 14:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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