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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:417
  • 最近打卡:2025-04-30 21:39:09
已绑定手机

34

主题

2096

回帖

2206

积分

荣誉版主

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

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


截图202411200040417141.jpg


截图202411200041208805.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:422
  • 最近打卡:2025-05-01 09:54:52
已绑定手机

19

主题

3190

回帖

4866

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:372
  • 最近打卡:2025-05-01 10:53:48

12

主题

125

回帖

1685

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:469
  • 最近打卡:2025-05-01 10:00:51

3

主题

83

回帖

1211

积分

金牌会员

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

计算星期几的,0应该是星期天
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:213
  • 最近打卡:2025-04-23 20:59:03
已绑定手机

36

主题

560

回帖

1885

积分

荣誉版主

积分
1885
发表于 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

主题

64

回帖

358

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:287
  • 最近打卡:2025-05-01 13:00:01

0

主题

52

回帖

1280

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:502
  • 最近打卡:2025-05-01 08:01:38
已绑定手机

1

主题

833

回帖

1441

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:147
  • 最近打卡:2025-04-28 10:37:12
已绑定手机

5

主题

108

回帖

361

积分

中级会员

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 04:06 , Processed in 0.135840 second(s), 133 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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