关于月朔也有说明:朔是日月黄经相等的时刻,但由于太阳和月亮运行的不均匀性,导致每两 个相邻月朔之间的时间都不相等,中国唐初以前的农历采用的是经过长期观测统计求得的相邻月朔 间的平均时间,将这个平均时间当成一朔望月,由此直接计算而来的各个月朔时刻称之为平朔。而 唐初后农历中使用的修正后的比较精确的朔被称为定朔,它们之间是有相对误差的。
5)日及平太阳日
日是地球自转带来的昼夜交替,时、分、秒都脱胎于它。以往日的定义是真太阳日,也就是在 地面上观测到的太阳视点绕地球一周又回到天球上天顶位置的时间间隔,这个间隔和地球精确自转 一周的时间(恒星日)有点差别,因为地球还在公转,位置有点变化,其原理类似于春分日前进导 致的回归年和恒星年的差距。另外地球的黄赤夹角以及椭圆轨道上的公转速度不均匀也导致了真太 阳日的长短在一年中有所区别,为了消除这个差别,历法中引入了平太阳的概念。 “平”在历法中是 指时间均匀分布的意思,平太阳则是一个假想的太阳,以均匀的速度在天球赤道上绕地球运动,其 速度的精确值为真太阳在一回归年内的平均速度,并且和真太阳同时经过近地远地点,这个平太阳 运行一周回到天顶的时间则定义为一平太阳日,也就是现在通常的日的概念。换句话说,地球一年 内的自转转速分布和公转情况共同决定了一平太阳日的实际大小。
至于时、分、秒,最初都是由平太阳日的定义衍生而来的:1 平太阳日等分为 24 小时,1 小 时等分为 60 分钟,1 分钟等分为 60 秒。 而后来由于地球自转不均匀导致的平太阳日的精确度不 高,便另起炉灶以其他更精确的手段规定秒的长度,则是以后的事情了。
6)节气
节气是对一回归年内地球公转轨道上的 24 个具有季节意义的等分位置的描述, 这 24 个节气 名这里就不赘述了,只是这个“等分”也有说法:中国古代采用平气,按时间等分一回归年,相邻 两节气之间时间间隔固定。清代修历后改用定气,等分周天为 24 分,每 15°为一个节气,这样 相邻节气的时间间隔由于地球公转速度的变化会有所不同。
24 个节气中包括 12 个节气和 12 个中气,奇数号为节气,存在于每公历月上旬,偶数号为 中气,存在于公历月下旬。中气对阴历的闰月计算起着决定性的作用。
本文的节气计算和中国现代农历一样使用定气。而古代使用的平气,其交节时刻和根据定气计
手册,免费。
算推得的时刻会有较大的误差,计算时应予注意。
7)年月日时的天干地支
中国采用天干地支计法来计年月日时,十天干十二地支循环配成六十花甲再轮排,年月日时都 有和其对应的干支。计算年月日时的干支俗称“算八字” ,当然本文的算八字是指根据年月日时推算 出干支数,并非根据推算出来的四个干支再算命运财运桃花运等,那已经不属于本文讨论的范畴了。
三、历法算法分类介绍
在说明算法之前,一些约定俗成的说法需要说明一下:
l 公元前 n 年表示为 n 年,公元 0 年不存在
l 不存在公元 1582 年 10 月 5 日到 14 日这 10 天(被 Gregory 删掉了),但星
期和干支仍然连续。
l 计算而得的干支、生肖、星座、节气的数字描述均以 0 为起始。
l 求回归年内第 N 个节气交节时刻时,第 1 个代表小寒,这里无第 0 个的说法。
CnCalendar 目前的历法算法包括:
l
l
l
l
l
l
l 星期 公历年月日时的干支 节气的公历交节时刻 星座 公历转农历(部分) 数九三伏入梅出梅 日出日落时刻的计算
下面对各个算法分开进行简要说明。具体实现可以参考 CnCalendar 中的代码,里面也有较 为详尽的注释。
1、计算星期
CnCalendar 提供了根据公历年月日计算星期几的方法,算法来源于《新编万年历》一书的公 元日数求余法(有细微修改),原理很简单:星期的 7 天排列是和具体历法无关的,只按照日数循 环计算,因此只要知道某个公历年月日距某个参照日的天数和此参照日的星期数,便可通过 7 求余 法计算出公历年月日的星期几来。算法中,距公元 1 年 1 月 0 日(公元前 1 年 12 月 31 日) 的日数等于两部分之和:基础年日数和闰年修正日数。前者等于和公元 1 年的年份差乘以 365 再 加上今年此日距今年 1 月 0 日的日数(包括此日本身,每个闰年里多出的 1 日也计算在内)。后 者等于年份差对 4 求余再减去个修正值。年份差是该年和公元 1 年的实际年份差距,当 N 为正 时,公元 N 年的年份差为 N 1,公元前 N 年的年份差为 N(因为无公元 0 年)。修正值是对 儒略历和格里高利历切换期间的日期调整和对百年不闰四百年又闰规则的调整之和。 其值规则如下:
l 日期为 1582 年 10 月 5 日之前(含 5 日,以下同)时为 0。
手册,免费。
l 日期为 1582 年 10 月 15 日至 1700 年 12 月 31 日时为 10。
l 从 1701 年 1 月 1 日起增加 1,每增加一个世纪再加 1 ,但能被 400 整除的世
纪不累加。如 1801 年元旦后修正值为 12,1901 年元旦后修正值为 13,2001
年元旦后修正值仍为 13。2101 年元旦后才为 14。
算出实际日期后,减去 2,再对 7 求余,得到的即是星期值,0 对应星期日,1 对应星期一, 由此类推。这儿减去 2 是因为公元 1 年 1 月 2 日才是星期天(0 日是星期五,因此 2 也可 用 +5 代替)。
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说公务员考试阴历算法CnCalendar(2)在线全文阅读。
相关推荐: