星期、干支、二十八宿计算公式
1. 求星期公式
星期=[5+A(实际天数)] mod 7
2. 干支计算公式
六十甲子干支序号,从1->59->0。
六十甲子干支序号=[23+A(实际天数)] mod 60
3. 二十八宿计算公式
二十八宿序号=[23+A(实际天数)] mod 28
4. 实际天数A的计算
A=B(基本天数)+C(闰日天数)
B=(计算年-1)*365+(要计算到年的月日天数)
例:1984年2月1日的基本天数B=(1984-1)*365+(31+1)=723827(天),
其中,31是1月为31天,1为2月1日为1天。
公元308年8月28日的基本天数
B=(308-1)*365+(31+28+31+30+31+30+31+27)=112055+239=112294(天)
这里的(要计算到年的月日天数),用的是公历,月日天数的规则我好
象小学就学过了。哈哈……
C=(计算年-1) div 4 -误差修正值 + fixValue2
fixValue2为0或者1。常值为0,当年数为闰年(公历闰年法)之中的3月
1日之后的为1。
误差修正值推算:
公元元年1月1日至1582年10月14日为0。
1582年10月15日至1699年12月31日为10。
从1701年1月1日起每增加一个世纪累加1,但能被400除尽的世纪不累
加1。此方法推算即可。
--有一个问题,1700年这一年的修正值应为多少呢?算法中正好没有
讲到,但看来应该是10。
例1701年1月1日起误差值为11,而1801年1月1日起误差修正值为12,
而1901年1月1日起误差修正值为13,
但2001年误差修正值仍为13,因为2000年能被400整除,故不累加。而
2101年1月1日起误差修正值为14。
5. 实例:1998.3.15的星期、干支与二十八宿
B=(1998-1)*365+(31+28+15)=728979
C=(1998-1) div 4 - 13 + 0 = 486
A=B+C=728979+486=729465
星期序号=(5+729465) mod 7=0,即为星期日
干支序号=(13+729465) mod 60=58,即为辛酉
二十八宿序号=(23+729465) mod 28=4,即为房
1. 干支记年
1 2 3 4 5 6 7 8 9 10
甲子 乙丑 丙寅 丁卯 戊辰 己巳 庚午 辛未 壬申 癸酉
11 12 13 14 15 16 17 18 19 20
甲戌 乙亥 丙子 丁丑 戊寅 己卯 庚辰 辛己 壬午 癸未
21 22 23 24 25 26 27 28 29 30
甲申 乙酉 丙戌 丁亥 戊子 己丑 庚寅 辛卯 壬辰 癸巳
31 32 33 34 35 36 37 38 39 40
甲午 乙未 丙申 丁酉 戊戌 己亥 庚子 辛丑 壬寅 癸卯
41 42 43 44 45 46 47 48 49 50
甲辰 乙巳 丙午 丁未 戊申 己酉 庚戌 辛亥 壬子 癸丑
51 52 53 54 55 56 57 58 59 60
甲寅 乙卯 丙辰 丁巳 戊午 己未 庚申 辛酉 壬戌 癸亥
公元后:年份(y)计算方式 :((y%60)-4+60)%60
公元前: 年份(y)计算方式: (57-y%60+60)%60
2.干支记月
年 份 | 一月 | 二月 | 三月 | 四月 | 五月 | 六月 | 七月 | 八月 | 九月 | 十月 | 十一月 | 十二月 |
甲、巳 | 丙寅 | 丁卯 | 戊辰 | 己巳 | 庚午 | 辛未 | 壬申 | 癸酉 | 甲戌 | 乙亥 | 丙子 | 丁丑 |
乙、庚 | 戊寅 | 己卯 | 庚辰 | 辛巳 | 壬午 | 癸未 | 甲申 | 乙酉 | 丙戌 | 丁亥 | 戊子 | 己丑 |
丙、辛 | 庚寅 | 辛卯 | 壬辰 | 癸巳 | 甲午 | 乙未 | 丙申 | 丁酉 | 戊戌 | 己亥 | 庚子 | 辛丑 |
丁、壬 | 壬寅 | 癸卯 | 甲辰 | 乙巳 | 丙午 | 丁未 | 戊申 | 己酉 | 庚戌 | 辛亥 | 壬子 | 癸丑 |
戊、癸 | 甲寅 | 乙卯 | 丙辰 | 丁巳 | 戊午 | 己未 | 庚申 | 辛酉 | 壬戌 | 癸亥 | 甲子 | 乙丑 |
注:干支与阳历一样都是以地球公转周期计算的,阴历最好转为阳历再计算,干支的月份是以二十四节气为起始,和阴历阳历的月份都没有直接关系
3.干支记日
G = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3
Z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i
其中 C 是世纪数减一,y 是年份后两位,M 是月份,d 是日数。1月和2月按上一年的13月和14月来算。奇数月i=0,偶数月i=6。G 除以10的余数是天干,Z 除以12的余数是地支。
计算时带[ ]的数表示取整。
星期、干支、二十八宿计算公式相关推荐
- C语言根据日期计算星期——基姆拉尔森计算公式
公式 基姆拉尔森计算公式 w = ( day + 2month +3(month+1)/5 + year + year/4 - year/100 +year/400)%7 根据已知公元1年1月1日星期 ...
- 天干地支计算公式_日干支公式速算法,根据阴历或阳历推算日干天干地支方法...
欲求日干支,必须要记得某年元旦那天的干支,以后再用公式推算.日干支的推算比较繁琐,只有以阳历来推算.因阳历每月的月大月小是固定的,在阳历每4年有一次闰二月,因此用阳历推算比较方便.用公历推算日干支,首 ...
- 五运六气计算java代码_破译干支历法和五运六气
开门见山 一:历法解释 适用于五运六气.十月历.十二月历以及干支合历的基本条件: 1:连续纪日. 2:连续纪年. 3:采用回归制和以太阳为参考点的相对位置. 4:每360天换算一个年干支. 5:节气另 ...
- 《程序设计基础综合实践》各备选题目[2023-02-13]
<程序设计基础综合实践>各备选题目[2023-02-13] <程序设计基础综合实践>各备选题目设计参考提示 一.总体要求 1.注释要求 注释是程序员与日后的程序读者之间通信的重 ...
- c语言风景日历制作系统,初学,C语言日历制作
VC编译实现万年历的输出 具体功能:输入任意年份,输出日历(主要是对其星期的排列问题). 主要算法:基姆拉尔森计算公式(计算任意日期的星期 ) W= (d+2*m+3*(m+1)/5+y+y/4-y/ ...
- UNIX时间和夏令时计算
UNIX时间和夏令时 工作笔记 工作笔记 UTC和GMT gmt和utc都是标准时间. GMT是比较古老的时间较量标准,根据地球公转自转计算时间.UTC则是根据原子钟来计算时间,现在基本都用UTC时 ...
- C语言根据日期(年,月,日)判断星期几(使用基姆拉尔森计算公式)
C语言根据日期判断星期几(使用基姆拉尔森计算公式) 算法如下: 基姆拉尔森计算公式 W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7 在公式中d表示日期中的日 ...
- 算法设计——基姆拉尔森计算公式:计算几月几号是星期几
基姆拉尔森计算公式 W=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400+1)%7 其中,W表示算出的星期的数字表示:0:星期日:1:星期一-- d表示日期,m表示月份,y表示年份 ...
- java 从已知日期计算干支纪日_天干地支纪日纪时计算公式
年:每个干支为一年,六十个干后,又从头算起,周而复始,循环不息.由甲子开始,满六十年称做一甲子或一花甲子.称为干支纪年法. 月:正月是由寅开始,每个月的地支固定不变,然后依次与天干组合:由第一年的正月 ...
最新文章
- 耐能团队论文登上《自然·电子学》:集成忆阻器与CMOS以实现更好的AI
- 使用android frame动画定义自己的ProgressBar
- linux下多个db2,Linux下安装多个DB2副本
- java 注册驱动失败_java – JDBC驱动程序注册死锁?
- 【转】ABP源码分析四十二:ZERO的身份认证
- java中后退键_java - 单击后退按钮两次以退出活动
- MySQL Spatial Data Types
- Python的DoS拒绝服务之TCP/SYN洪水攻击
- 如何运行网页html,如何在网页中运行html代码
- [Java] 蓝桥杯ALGO-152 算法训练 8-2求完数
- bzoj 3680: 吊打XXX
- linux php-cli,php cli - shell语言的扩展利器 - Linux进阶, PHP技术 - freemouse-笔记-感悟-成长...
- 利用随机矩阵理论(random matrix theory)确定微生物网络构建阈值
- Linux-常用软件源整理
- 64K方法数限制原理与解决方案总结
- 磁盘占用率100%——哪些程序可以禁用(详细版)【还讲到独立显卡、集成显卡、双显卡、固态硬盘卡机卡死卡顿解决】
- 【Android 进阶】开发APP常见的错误
- 推荐几个高质量的程序员 B 站视频账号
- hdu 5873 Football Games 模拟、兰道定理Landau's Theorem
- SCEF引入需求分析及部署应用【转】