一些时间相关操作

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,即为房 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值