找回密码
 立即注册
查看: 4533|回复: 27

简简单单 8H/32G系列单片机RTC专用的星期计算代码

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:695
  • 最近打卡:2026-03-24 18:49:09
已绑定手机

49

主题

2643

回帖

2861

积分

荣誉版主

积分
2861
发表于 2024-6-24 00:31:53 | 显示全部楼层 |阅读模式
最近看到了很多关于RTC的应用贴,我也跟风发一个 8H/32G系列单片机RTC专用的日期换算星期极简代码:
  1. unsigned char code weekdata[12]={0,3,3,6,1,4,6,2,5,0,3,5};
  2. #define WEEK  ((6+weekdata[MONTH-1]+YEAR+DAY-(((YEAR % 4) || (MONTH > 2))?0:1) + YEAR/4)%7)
复制代码
代码非常非常简单,只有两行,只定义了一个偏移码表和计算星期的宏定义,这个码表支持2000~2099年之间的星期计算,也可以通过修改码表支持其它年份范围的计算,欢迎各路大佬验证代码和讨论原理,也欢迎交流更精简的版本。
调用方法非常简单,直接把WEEK当成寄存器使用即可:

  1. printf("%02bu-%02bu-%02bu %02bu:%02bu:%02bu-%03bu %bu\r\n",YEAR,MONTH,DAY,HOUR,MIN,SEC,SSEC,WEEK);
复制代码
带入一个日期,验算过程如下:
比如20241130

((6+weekdata[11-1]+24+30+24/4)%7) = (6+3+24+30+6)% 7 = 69 % 7 = 6 = 星期六
结果正确!!

1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:360
  • 最近打卡:2026-03-24 18:18:13

844

主题

1万

回帖

2万

积分

管理员

积分
22709
发表于 2024-11-20 00:41:25 | 显示全部楼层
截图202411200039477626.jpg


截图202411200040417141.jpg


截图202411200041208805.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:842
  • 最近打卡:2026-03-24 07:50:47
已绑定手机

58

主题

2015

回帖

3629

积分

论坛元老

积分
3629
发表于 2024-6-24 06:21:00 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:747
  • 最近打卡:2026-03-25 00:01:08
已绑定手机

19

主题

3340

回帖

6935

积分

论坛元老

积分
6935
发表于 2024-6-24 06:42:19 来自手机 | 显示全部楼层
这个不错啊。就2行
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2026-03-24 18:50:56

13

主题

137

回帖

2424

积分

金牌会员

积分
2424
发表于 2024-7-4 20:36:01 | 显示全部楼层
计算第几周的??
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:783
  • 最近打卡:2026-03-25 00:45:32

3

主题

104

回帖

2761

积分

金牌会员

积分
2761
发表于 2024-7-4 21:58:29 | 显示全部楼层
lzz*** 发表于 2024-7-4 20:36
计算第几周的??

计算星期几的,0应该是星期天
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:270
  • 最近打卡:2026-03-17 23:12:07
已绑定手机

48

主题

585

回帖

2109

积分

荣誉版主

积分
2109
发表于 2024-7-4 22:54:33 | 显示全部楼层
公式不错
不想算的,就读,哈哈
[22:42:48.194]接收←{"success":"1","result":{"timestamp":"1720104168","datetime_1":"2024-07-04 22:42:48","datetime_2":"2024年07月04日 22时42分48秒","week_1":"4","week_2":"星期四","week_3":"周四","week_4":"Thursday"}}
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:51
  • 最近打卡:2024-09-12 20:44:49

2

主题

63

回帖

356

积分

中级会员

积分
356
发表于 2024-7-5 06:38:35 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:572
  • 最近打卡:2026-03-24 08:07:28

0

主题

74

回帖

2412

积分

金牌会员

积分
2412
发表于 2024-7-5 08:40:29 | 显示全部楼层
收藏了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:826
  • 最近打卡:2026-03-24 07:50:30
已绑定手机

1

主题

844

回帖

2493

积分

金牌会员

积分
2493
发表于 2024-7-5 09:12:18 | 显示全部楼层
给您点个赞
靡不有初,鲜克有终
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:325
  • 最近打卡:2026-03-24 09:54:41
已绑定手机

6

主题

115

回帖

953

积分

高级会员

积分
953
发表于 2024-7-5 10:41:43 | 显示全部楼层
顶,谢谢分享
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-3-25 05:45 , Processed in 0.123033 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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