(MalcolmKe:
本站使用"呆历",以庄子诞辰(公元前369年,天文-368)为呆元0年(公元没有0年),则公元2006年(庄子诞辰2374年)为呆元2374年,以每年立春日为1月1日,单月每月30日,双月每月31日(平年的第12月只有30日),每月1日都是星期一,每个星期六天(星期一到星期五,星期日),双月的31日为星期日(这样每年甚至每月的日历一模一样),立春时刻采用曾次亮先生算法,见下表:
1月 | 星期一 | 星期二 | 星期三 | 星期四 | 星期五 | 星期日 | 2月 |
3月 | 1 | 2 | 3 | 4 | 5 | 6 | 4月 |
5月 | 7 | 8 | 9 | 10 | 11 | 12 | 6月 |
7月 | 13 | 14 | 15 | 16 | 17 | 18 | 8月 |
9月 | 19 | 20 | 21 | 22 | 23 | 24 | 10月 |
11月 | 25 | 26 | 27 | 28 | 29 | 30 | 12月 |
呆元:2389年 | 31 |
)
(MalcolmKe:更公允地应该采用太阳系八大行星作为自然时钟选取呆元起点,但是没搞到计算程序或计算结果,只知道6000年间有3次在10度区间内八大行星及太阳排成一字,不知道确切年份,为了与西元区分开,纪年数应比西元大,即呆元起点选在西元前,暂时随便选了庄子的诞辰作为呆元起点)
(MalcolmKe:我的生日1980-12-14是夏历庚申年11-08,而又刚好是呆历2348-11-08)
附算法代码:
//标准天数(Standard Days)(y年1月0日距1年1月0日的天数)
function SD($y)
{return ($y-1)*365+floor(($y-1)/4)-floor(($y-1)/100)+floor(($y-1)/400);
}
//y年第n个节气的日数刻度(浮点数)
function S($y,$n)
{$juD=$y*(365.2423112-6.4e-14*($y-100)*($y-100)-3.047e-8*($y-100))+15.218427*$n+1721050.71301;//儒略日
$tht=3e-4*$y-0.372781384-0.2617913325*$n;//角度
$yrD=(1.945*sin($tht)-0.01206*sin(2*$tht))*(1.048994-2.583e-5*$y);//年差实均数
$shuoD=-18e-4*sin(2.313908653*$y-0.439822951-3.0443*$n);//朔差实均数
$vs=$juD+$yrD+$shuoD-SD($y)-1721425;
return $vs;
}
//y年的立春日
function Spring($y)
{return $y.'-02-0'.floor(S($y,3)-31);
}
(摘自互联网)
夏历,东亚传统历法之一,也被称为农历、阴历、殷历、古历和“旧历”等,一般认为源自殷商时期。夏历属于一种阴阳历,一方面以月球绕地球运行一周为一“月”,平均月长度等于“朔望月”(29.5306日),这一点与阴历原则相同,所以也叫“阴历”;另一方面设置“闰月”以使每年的平均长度尽可能接近回归年(365.2422日),同时设置二十四节气以反映季节的变化特征。至今几乎全世界所有华人以及朝鲜半岛和越南等国家,仍旧使用夏历推算传统节日如春节、中秋节、端午节等节日。
○置闰:
夏历作为阴阳历的一种,每月的天数依照月盈亏而定,一年的时间以12个月为基准;为了合上地球围绕太阳运行周期即回归年,每隔一定时间,增加一个月,增加的这个月为闰月,因此夏历的闰年为13个月。
夏历有岁和年的区别。一岁指从一个冬至到下一个冬至的太阳年的时间长度,而一年指从一个正月初一到下一个正月初一的时间长度。注意这二者的长度不同。一月是指从一个新月到下一个新月的长度。如果某一岁中包含了12个完整月,则这一岁为闰岁。在闰岁中,第一个无中气月为闰月,相应的这一年为闰年。夏历还有一个规则,即冬至必须落在11月。
夏历没有第十三月的称谓,闰月按照历法规则,排放在任一个月的过后重复同一个月,重复的这个月为闰月,如四月过后的闰月称为闰四月。
○置闰产生的问题:
在确定某一节气落在哪一月时,只精确到日,而未到时与分。这一方法称为民用置闰。如果精确到时与分,则称历理置闰。中国大陆采用民用置闰。
由于日月运行之间的复杂关系,民用置闰将会在2033年及2034年导致异常情况。2033岁只有11个完整月,但须设为闰年,置闰11月;同时8月为假闰月,即该月无中气,但却不是闰月;该年的11月,12月均为双中气月。2034岁含12个完整月,但2034年非闰年,因无双中气月,且1月为假闰月。
天文学家们的计算显示,如果采用历理置闰,2033岁并无双中气月,因而无须置闰。
民用置闰还能导致不同时区在同一年中的不同置闰,而历理置闰则可以避免这个混乱。
○能否简化复杂的置闰规则呢?
答案是能!“无中气月”这个规则并无实质性函义。换句话说,如果我们抛弃这个规则,并不会对实际生活产生任何实质性的影响。许多不了解夏历的人以为,农民之所以用夏历是因为夏历能准确“提供”二十四节气。非也!二十四节气完全依据太阳的位置确定,直到汉朝才被“硬生生地”插入夏历(汉武帝太初元年, 即公元前104年)。夏历日期与二十四节气完全没有固定的对应关系。
所以,只要二十四节气准确给定,闰月随便放哪儿都没有问题。为简单起见,可以将闰月固定在某个月之后;比如,闰年总是闰六月。也可将闰月定为十三月。“冬至必须落在十一月”的规则也可放弃。只要“春节尽可能在立春前后”这一条规则就可以了。
夏历的日期对农业毫无用处(对渔业可能有点用处,潮汐主要受月球影响),甚至八字算命也跟夏历日期无关,要先转成道教阳历再查表。生肖属相也是以立春这个真正的春节为界。在现代,夏历只有两种用途:过传统节日(主要就是过年节, 其它跟日期相关的传统节日完全可以采用新历, 跟节气相关的传统节日更是直接用新历)和看月相。
○替代夏历的办法:
夏历的主要缺陷在于:一、每年长短不一,有时12个月,有时13个月;二、日期与二十四节气没有对应关系。
现在名不符实的春节(在夏历元旦日)是被袁世凯批准的,在袁世凯以前几千年来的中国传统春节在立春日(公历的2月4号左右)。1913年(民国二年)7月,由当时北京(民国)政府任内务总长的朱启钤向大总统袁世凯呈上一份四时节假的报告,称:“我国旧俗,每年四时令节,即应明文规定,拟请定阴历元旦为春节,端午为夏节,中秋为秋节,冬至为冬节,凡我国民都得休息,在公人员,亦准假一日。”但袁世凯只批准以正月初一为春节(因当时是“五族共和”,端午等汉族节日列为全国节日不妥),同意春节例行放假,次年(1914年)起开始实行。自此夏历岁首就被称为了“春节”。
实际上只要把夏历中的阴阳主从关系变动一下就可解决问题:以二十四节气阳历为主,直接用日期表示,以朔望月阴历为辅,用朔望附注表示。北宋科学家沈括(1032-1095)提出的“十二气历”就是一个比现行公历还精确的阳历(它的正月初一就在公历的2月4号左右,春节和过年就统一到一天了),只要将十二气历附注上朔望和传统节日,就是一个替代夏历的完美方案了。