一、日期表示法
1、数字符号法
a.公历、回历
第1位:历种。G公历、H回历
第2位:纪元前后。纪元前无标识,纪元后在年份前加',比如G'0001年,公元前1年。
第3-6位:年序号。
第7位:“/”,分隔符
第8-9位:月序号,公历、回历1-12
第10位:“/”分隔符
第11-12位:日序号
例如:G2011/8/28、H1432/9/28
农历主体历
第1位:历种。X:黄帝纪元,黄帝元年为0年。
第2-5位:年序号。
第6位:“/”,分隔符
第7-9位:月标识,前两位为流水号,闰月则有第三位',比如04'闰4月。
第10位:“/”分隔符
第11-12位:日序号
例如:X4708/7/27
农历干支历
第1位,0-F,纪顺序号(60年为1世,60世为1纪,24纪为1元)。公元前2697年立春,视作是辰正(第8纪)。
第2位,“:”分隔符
第3-4位,世序号,甲子为00,公元前2697年立春,视作是第8纪甲子(第0世)
第5位,“:”分隔符
第6-7位,年序号,甲子为00,公元前2697年立春,视作是第8纪第0世甲子年(第0年)
第8位,“/”分隔符
第9-10位,以24节气为始日,将1年分为24个节气月,1节气月14-16日;冬至为子正,立春为寅初。第9-10位为小月号,立春为0,冬至为21,大寒为23
第11位,“/”分隔符
第12-13位,日序号,节气当日为0。
例如:9:18:27/13/05。巳初纪壬午世甲子年申正小月第五日(处暑后第五日)
二、日期运算符。
“-”:求两个日期之间的天数,结果为日。
比如:G2011/08/29-X4708/08/15=-14。公历2011年8月29比农历4708年8月15早14日。
“>>”、“<<”:后移、前移,一个日期向后、向前推移若干年月日。
比如:G2011/08/29>>25=G2011/09/23;G2011/08/29>>1/25=G2011/10/24;G2011/01/28>>1/1/25=G2012/3/24
<、=、>:日期前后(以箭头指向为准)。G2011/08/29>X4708/08/15=True
“@”:系统当前日期。
“->G”,转公历
“->X”,转农历
“->H”,转回历
,“->N”转节气历
“->R”,求日干支
“->W”求星期
“?”:日期正确与否。比如:G2011/02/29?=False
三、农历常数的数据结构。
以60年为1个包(年世表),使用64个16字节数据表示。
第1-60个16字节为年表。
第61个16字节为公对农换算数据
第62个16字节为回对农换算数据
第63个16字节为儒略日对农换算数据
第64个16字节为世表
年表结构为:
第1-16位为年序号。
第17-28位为当年起始月在本世内的流水号。从1始。(方便对回换算)
第19-32位为闰月序号。无闰为0
第33-48位为当年起始日在本世内的流水号。从1始。(方便对公跨年换算)
第49-52位为始日天干,0:甲、9:癸。
第53-56位为始日地支,0:子,B:亥。
第56-60位为始日星期,0:日,6:六/土
第61位为立春所在月。立春在正月,为1;立春若在年前,前面补一个30天的0月
第62-75位,为大小月标记,0为大月30天,1为小月29天。
第76-80位,立春日期
第81-128位,各节气月的长短,每个节气月2位,11为14天、00为15天、01为16天
比如:2012年的年表为 949C 15B 4 27EA 971 A954A 34 05 14 50 00 30
第61个16字节换算表结构为
第1-16位,序号。
第17-28位,年号。
第19-32位,0
第33-48位,始日流水号。(为方便计算,以2月的日期均+2,以1/30日为首日。)
第49-52位为始日天干,0:甲、9:癸。
第53-56位为始日地支,0:子,B:亥。
第56-60位为始日星期,0:日,6:六/土
第69-128位,年大小标记。大年366天,为1,小年365天,为0,大多是0x1 1111 1111 1111。
本世的换算表为94 9C 15 B4 27 EA 97 12 55 4D 34 05 14 50 00 30
第62个16字节换算表结构为
第1-16位,序号。
第17-28位,年号。
第19-32位,立春所在月月号。
第33-48位,始日流水号。(为方便计算,以最靠近农历的那个月的月号为准,多为2或3)
第49-52位为始日天干,0:甲、9:癸。
第53-56位为始日地支,0:子,B:亥。
第56-60位为始日星期,0:日,6:六/土
第66-128位,年大小标记。小年354天,为1,大年355天,为0。
本世的换算表为94 BD 57 C5 00 02 33 50 2D AD B5 B6 B6 B6 D6 DA
第63个16字节换算表结构为
第1-16位,序号。
第81-128位,首日儒略日号
本世的换算表为94 BE 00 00 00 00 00 00 00 00 00 00 00 25 51 A5
第64个16字节世表结构为
第1-16位为序号。
第17-28位为最后一个月的流水号。从1始。(方便对跨世换算)
第19-32位为0
第33-48位为最后一日的流水号。从1始。(方便对公跨世换算)
第49-52位为末日天干,0:甲、9:癸。
第53-56位为末日地支,0:子,B:亥。
第56-60位为末日星期,0:日,6:六/土
第69-128位,年平闰标记(便于对回换算)
本世世表为94 BF 2E 60 55 98 00 00 04 92 92 92 52 52 4A 49
[此贴子已经被作者于2011-8-30 8:26:56编辑过]