以下是引用chwc在2014-2-25 18:26:00的发言:
置闰规则都这么长,是哪个规则长,先来比一下:
现行“岁首起月法”定月置闰规则:
上年冬至日到今年冬至日如果有13个月,以第1个无中气月为闰月,在那个月之后称闰几月,如在三月后是第1个无中据月就称闰3月。
你的“节气定月法”定月置闰规则:
立春 位于 正月①位 或 正月②位 或 正月前一个月的末位(即闰十二月或十二月的末位)
雨水 位于 正月①位 或 正月②位 或 正月②位之后的第一位(即正月③位或二月①位)
惊蛰 位于 二月①位 或 二月②位 或 二月前一个月的末位(即闰正月或正月的末位)
春分 位于 二月①位 或 二月②位 或 二月②位之后的第一位(即二月③位或三月①位)
清明 位于 三月①位 或 三月②位 或 三月前一个月的末位(即闰二月或二月的末位)
谷雨 位于 三月①位 或 三月②位 或 三月②位之后的第一位(即三月③位或四月①位)
立夏 位于 四月①位 或 四月②位 或 四月前一个月的末位(即闰三月或三月的末位)
小满 位于 四月①位 或 四月②位 或 四月②位之后的第一位(即四月③位或五月①位)
芒种 位于 五月①位 或 五月②位 或 五月前一个月的末位(即闰四月或四月的末位)
你的“节气定月法”定月置闰规则还有一半我没贴出来呢!规则谁更长。你自已比比?
排谱方面,现行的只要注意一下两个冬至日之间是不是有13个月,如有才去找第一个无中气月,不必去理会节的位置,定冬至日在11月,相当定冬至点为回归年点,这与公历定春分点一样,定点在日左右是办不到,只能定点在一个月里。你的规则却必须24个节气全部注意,一个也不能不管,但又没办法做定一个点不变,每个多是要在两个月之间漂移,一个定点也没有,定点在日左右是办不到,你的定点在一个月里你也办不到。
比编程代码长短其实一点意义也没有,我上面的代码只是个算法举例;因为各人思路不同,同一规则不同的人编出来的源码也是长短不同的。就是同一个人,随着经验增长,代码会越来越短。
两个规则排出的结果只有少数不同,1984年10月到1985年2月有不同后,再到如2033年11月到2034年2月之间才不同而于。几十年才这么几个月不同。采用繁锁规则不现实。
[此贴子已经被作者于2014-2-25 21:12:48编辑过]
民用历谱由平气改为定气之前,中气与月份一一对应,无中则闰。改为定气之后,中气与月份不完全一致,不满足“无中即闰”规则了,于是汤若望便将规则改为“以包含冬至日的月份固定为十一月,两个冬至月之间如果有12个月,则第一个无中气月置闰”,他将冬至、冬至月与其他中气、其他月份区别对待,以冬至具有基准性质的地位、冬至月具有基准性质的作用。置闰规则表面上只有一句话,实际上省略了一层隐含的含义“将冬至作为基准中气,冬至月作为基准月份,不含冬至的月份均为非基准月”。
岁首起月法置闰规则实质上包含以下内容:
1、将冬至作为基准中气,包含冬至的月份作为基准月份,其他月份均为非基准月。
2、基准月份以基准中气确定月名。
3、非基准月份依次序确定月名。
4、如果两个基准月之间有12个非基准月,则将首个无中气月置闰,并依据前一个月确定月名。
岁首起月法中的基准月份每年1个,非基准月每年11-12个。节气定月法将基准月份的范围进行扩充、非基准月数量进行缩减,仅把双中气月前的月份作为非基准月,其他月份均为基准月,这样基准月份的比例由8.1%增至99.7%,而非基准月由92%减为0.3%。
相应的,节气定月法的规则可表述为:
1、当无中气月后面有双中气月时,将该无中气月至双中气月第一个中气期间的所有中气作为非基准中气,该无中气月至双中气月前一个月期间的月份作为非基准月份,其他月份均为基准月份。
2、基准月份以基准中气确定月名。
3、非基准月份依次序确定月名。
4、无中气的基准月置闰,并依据前一个月确定月名。
两种规则比较起来没有明显的繁简差别,第1条前者比后者简单,第2、3条两者基本相同,第4条后者优于前者。
在我上传的软件里,介绍了节气定月法的原则和方法,但没有写它的规则,因为我认为只要不违反它的原则,无论怎样去叙述其规则,可能有不同的表述,但最终的应用结果都会是一致的。