77范文网 - 专业文章范例文档资料分享平台

阴历算法CnCalendar(3)

来源:网络收集 时间:2021-09-24 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

2、计算干支

计算年月日时干支的原理和计算星期差不多,因为其连续性,都可以用求余法来计算。不过中 国用来计算干支的年月概念和公历年月不同,年以立春为界,月以 12 节气为界,计算前公历的年 月需要转换成传统中国历法的年月。 

1)年干支

计算年干支需要公历年月日三参数,无月日参数则默认认为是立春之后的某日,这样不需要调 整年份。如有月日参数,则判断其是否处于本年立春交节时刻之前,之前则属于去年,年份减一。 得到转换的年份后,假设为 Year,如其大于 0,则干支数为 (AYear ­ 1 ­ 3) mod 60,其中 Year ­ 1 为到公元 1 年的年份差,Year 为负数则根据无公元 0 年调整为 (AYear + 1 ­ 1 ­ 3) mod 60,这个 ­3 源于公元 1 年是辛酉年,而辛酉在六十花甲的 0 ~ 59 中排行 57。 

2)月干支

公历月份的干支数虽可以用求余法来计算,不过因为一年的月份数等于地支数,和天干数的关 系也比较简单,因此有更简便的口诀算法(口诀来源于《新编万年历》一书,网上也有类似文章)。 首先仍然需要根据当年的立春和各个节气交节时刻来调整年月数,然后计算出本年干数,年干数和 本年首月月干数有口诀对应,这里把冗长的口诀简化了一下写在注释里,用代码描述如下:

case Gan of // 根据口诀从本年干数计算本年首月的干数

0,5: // 甲己 丙佐首,

Result := 2;

1,6: // 乙庚 戊为头,

Result := 4;

2,7: // 丙辛 寻庚起,

Result := 6;

3,8: // 丁壬 壬位流,

Result := 8;

4,9: // 戊癸 甲好求

Result := 0;

end;

现行农历沿用了夏历,规定正月为寅。得到首月的干支数后,便可序次推得该月干支数。

手册,免费。

3)日干支

日干支和星期的计算有类似之处,按星期计算的法子算得公元日数后,加 12 再对 60 取余则 得到当日的干支数,12 源于公元 1 月 0 日是丙子日,而丙子在六十花甲的 0 ~ 59 中排行 

12。 

4)时干支

一天 24 小时对应着 12 个时辰,时辰和干支对应,但时辰的分界却不严格对应着日的分界。 前一日 23 时到本日 1 时为子时,1 到 3 时为丑时,依此类推。时干支和月干支的计算类似,首 先根据小时数转成时辰数,如果是 23 时以后,则日期调整为后一天。接着计算出本日干数,本日 干数和本日子时干数也有简单的对应关系,不过这次没找到口诀,大概因为对应比较简单。此对应 关系用代码描述如下:

case Gan of

0,5:

Result := 0;

1,6:

Result := 2;

2,7:

Result := 4;

3,8:

Result := 6;

4,9:

Result := 8;

end;

可以简化成:

if Gan >= 5 then

Dec(Gan, 5);

Gan := 2 * Gan;

所以不需要口诀了。

得到子时干数后,便可序次推得本日内时辰的干支数。 

3、计算节气

节气的定义虽然简单,可要计算出比较精确的交节时刻却并不容易,原因就是春分点在一回归 年内会有细微移动,所以太阳两次通过各个定气点的相隔时间并不是一精确回归年,便没法以 365.2422 日为周期来直接计算各个节气的时刻。CnCalendar  的算法移植自中国日历类中作者根 据曾次亮著作而拟合的节气算法,考虑到了地球自转的进动与章动,因此平气定气的精确度据作者 说能达到 10 分钟左右。

手册,免费。

4、计算星座

星座计算比较简单,仅仅根据月日就可以确定黄道十二宫的对应数值,规则如下:

01.20 - 02.18:水瓶座

02.19 - 03.20:双鱼座

03.21 - 04.20:白羊座

04.21 - 05.20:金牛座

05.21 - 06.21:双子座

06.22 - 07.22:巨蟹座

07.23 - 08.22:狮子座

08.23 - 09.22:处女座

09.23 - 10.22:天秤座

10.23 - 11.22:天蝎座

11.23 - 12.21:射手座

12.22 - 01.19:摩羯座

但黄道十二宫以白羊居首, 所以代码中返回的星座序号中 0 对应着白羊, 水瓶双鱼分别是 10、 11。

另外星座名称有不同说法,如摩羯又称山羊、水瓶又称宝瓶,射手又称人马、天秤又称天平等, 这里只采用比较常用的说法。 

5、计算农历 

1)农历历法详细规则

中国的农历在 1929 年以前以北京当地的经度 116°25′为计算基准,之后以北京时间也就 是东经 120°的东八区标准时间为计算基础。农历有四条基本规则:

1. 月朔时刻(定朔)所在之日定为农历月初一。

2. 如某节气交节时刻落于初一本日内(0 时后到 24 时前),即使其交节时刻早于月朔

时刻,也算落在此月中。

3. 冬至必须出现于农历十一月内。

4. 相邻的冬至交接时刻间(岁内)如出现 13 次月朔也就是 12 个完整的农历月,则此

岁称为闰岁,此岁中有一个月需要设置成闰月。因为期间必然有 12 个中气,所以至

少有一个农历月没有中气落入其中,闰岁内第一个没有中气的月份定为闰月,月份数

与前一月相同。

对于第四条规则,需要强调的是年内和岁内两个的概念是不同的,如出现岁内有两个农历月无 中气的情况,则以第一个为闰月,而此闰月可能不会落在本年内。而如果岁内有一农历月无中气但 本岁只有 12 次月朔也就是 11 个完整的农历月的情况下,那个无中气的月并不会被置闰。典型的 例子是 2033 年闰 11 月:2033 农历年第 8 个农历月和第 11 个农历月都无中气,但因为 2032 农历年冬至(11 月)到 2033 农历年冬至(11 月)间只有 11 个完整的农历月,所以不

手册,免费。

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试阴历算法CnCalendar(3)在线全文阅读。

阴历算法CnCalendar(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/gongwuyuan/1249531.html(转载请注明文章来源)

相关推荐:

Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: