找回密码
 立即注册
查看: 5018|回复: 29

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

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:788
  • 最近打卡:2026-07-05 13:03:19
已绑定手机

50

主题

2745

回帖

3039

积分

荣誉版主

积分
3039
发表于 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 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
~~~
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:453
  • 最近打卡:2026-07-03 08:57:36

830

主题

1万

回帖

2万

积分

管理员

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


截图202411200040417141.jpg


截图202411200041208805.jpg

回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:944
  • 最近打卡:2026-07-05 10:37:41
已绑定手机

61

主题

2089

回帖

3081

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:849
  • 最近打卡:2026-07-05 00:00:31
已绑定手机

19

主题

3439

回帖

7456

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:657
  • 最近打卡:2026-07-05 11:41:46

13

主题

143

回帖

1744

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:873
  • 最近打卡:2026-07-05 09:14:47

3

主题

104

回帖

2971

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:274
  • 最近打卡:2026-05-12 19:18:00
已绑定手机

48

主题

598

回帖

2117

积分

荣誉版主

积分
2117
发表于 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 | 显示全部楼层
学习
回复

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:656
  • 最近打卡:2026-07-05 09:47:08

0

主题

79

回帖

2610

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:924
  • 最近打卡:2026-07-05 08:22:04
已绑定手机

1

主题

842

回帖

2717

积分

金牌会员

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

使用道具 举报 送花

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

7

主题

120

回帖

1054

积分

金牌会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-7-5 14:12 , Processed in 0.080202 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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