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

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

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:739
  • 最近打卡:2026-05-10 00:42:46
已绑定手机

49

主题

2669

回帖

2782

积分

荣誉版主

积分
2782
发表于 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
  • 打卡总天数:403
  • 最近打卡:2026-05-10 15:24:05

849

主题

1万

回帖

2万

积分

管理员

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


截图202411200040417141.jpg


截图202411200041208805.jpg

回复

使用道具 举报 送花

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

59

主题

2037

回帖

3873

积分

论坛元老

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

使用道具 举报 送花

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

19

主题

3387

回帖

7235

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:611
  • 最近打卡:2026-05-10 08:50:08

13

主题

139

回帖

2494

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:823
  • 最近打卡:2026-05-10 00:30:57

3

主题

104

回帖

2861

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:273
  • 最近打卡:2026-04-15 20:53:51
已绑定手机

48

主题

585

回帖

2115

积分

荣誉版主

积分
2115
发表于 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
  • 打卡总天数:609
  • 最近打卡:2026-05-09 11:25:37

0

主题

77

回帖

2492

积分

金牌会员

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

使用道具 举报 送花

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

1

主题

843

回帖

2584

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:341
  • 最近打卡:2026-05-08 08:57:07
已绑定手机

6

主题

116

回帖

987

积分

高级会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2026-5-10 23:23 , Processed in 0.150389 second(s), 117 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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