android optionmenu:请问农历5月28日在公历是几月几日?如何推算?

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/06 13:50:12

6月20日

  一、由公元推干支

  为了便于运算和使检索更加直观,我借用六十干支表并按顺序加以编号成表一如下:

  表一:六十干支表

  甲子

  0
  乙丑

  1
  丙寅

  2
  丁卯

  3
  戊辰

  4
  己巳

  5
  庚午

  6
  辛未

  7
  壬申

  8
  癸酉

  9

  甲戌

  10
  乙亥

  11
  丙子

  12
  丁丑

  13
  戊寅

  14
  己卯

  15
  庚辰

  16
  辛巳

  17
  壬午

  18
  癸未

  19

  甲申

  20
  乙酉

  21
  丙戌

  22
  丁亥

  23
  戊子

  24
  己丑

  25
  庚寅

  26
  辛卯

  27
  壬辰

  28
  癸巳

  29

  甲午

  30
  乙未

  31
  丙申

  32
  丁酉

  33
  戊戌

  34
  己亥

  35
  庚子

  36
  辛丑

  37
  壬寅

  38
  癸卯

  39

  甲辰

  40
  乙巳

  41
  丙午

  42
  丁未

  43
  戊申

  44
  己酉

  45
  庚戌

  46
  辛亥

  47
  壬子

  48
  癸丑

  49

  甲寅

  50
  乙卯

  51
  丙辰

  52
  丁巳

  53
  戊午

  54
  己未

  55
  庚申

  56
  辛酉

  57
  壬戌

  58
  癸亥

  59

  该表于公元前后的推算均适用,具体的方法如下:

  1,求公元后某年(设为Y)的干支。方法是:先以Y除以60得出余数,然后再减去4,最后根据所得结果查表一中相应序数所对应的干支即为该年的干支。

  例如求公元1911年的干支:1911÷60余数为51,减4后得47,查表一47对应的干支是辛亥,即1911年为辛亥年。由于干支纪年60年一循环,当Y÷60的余数小于4时,需借干支纪年的一个周期60之数,例如1981年除以60余数为1,直接减4不够减,加上60之后再减4等于57,查表一便知1981年为辛酉年。余可类推。

  2,求公元前某年(设为X)的干支。方法是:先以X除以60求其余数,再用57减去所得余数,根据所得结果再查表一中对应的干支,即为该年的干支。

  例如求公元前221年的干支:221÷60,余数是41,以57-41=16,查表一16对应的是庚辰,即公元前221年对应的干支应为庚辰。同样由于干支纪年的循环周期为60年,当余数大于57时,也需再借60。例如求公元前479年(孔子卒年)的干支:479除以60余59,用57减59不够减,加上60之后再减59等于58,查表一知该年对应的干支为壬戌。其余可以类推。

  上述方法简便易行,只要记住表一,就完全可以不用纸笔,直接由心算推出结果。

  此外,由于六十甲子是由十天干和十二地支依次搭配而成,十天干按顺序循环使用。也就是说,在干支纪年中,同一天干每十年出现一次,而公元纪年年数采用十进位制。由此推知,某天干必然和公元年份某一固定的尾数(个位数)相对应,于是得出十天干与公元纪年的个位数对照表如下(表二):

  表二:十天干与公元纪年个位数对照表

  0
  9
  8
  7
  6
  5
  4
  3
  2
  1
  公元前

  辛
  壬
  癸
  甲
  乙
  丙
  丁
  戊
  己
  庚

  公元
  1
  2
  3
  4
  5
  6
  7
  8
  9
  0

  根据表二,凡公元某年个位数为7,其对应的天干必为丁,若个位数是3,则对应天干是癸,余类推;凡公元前某年个位数为7,其对应的天干必为甲,若个位数是3,则对应天干是戊,余类推。换句话说,凡干支纪年称甲某年(如甲子、甲寅)的,其对应的公元纪年的个位数必为4,若是公元前则应为7,其余参照表二类推。

  该表二的优点是可以直接用来检查前述由公元推算干支的结果中尾数是否正确,当然也可以与地支配合直接用于换算。其依据是,由于地支数目为十二,在六十干支纪年中地支的循环周期就是十二年。我国古代还有把每个地支分别与某个动物联系在一起的习惯,这就是通常所说的十二属相。既然在干支纪年中十二地支是循环使用,那么,在将公元纪年与干支纪年相对应时,十二进位的地支与十进位的公元之间仍可以找到一种余数的对应关系。这种余数对应关系可以表述为:无论是公元前还是公元后的任意年份,如果在除以12后所得余数相同,其分别对应的地支也就应该相同。具体的对应如下表:

  表三 :十二地支与余数对应表

  酉
  申
  未
  午
  巳
  辰
  卯
  寅
  丑
  子
  亥
  戌
  公元前

  0
  1
  2
  3
  4
  5
  6
  7
  8
  9
  10
  11

  公元
  申
  酉
  戌
  亥
  子
  丑
  寅
  卯
  辰
  巳
  午
  未

  也就是说,公元后任意一年,如果除以12后余数为3,则该年地支必是亥;若是公元前某年除以12的余数为3,其对应的地支则是午。若某年能被12整除,则对应的公元前、公元后的地支分别是酉、申。其余均可参照表三类推。

  这样一来,如果觉得表一难以记忆的话,也可通过表二和表三分别推出公元前后任意一年的天干和地支。只要记住表二和表三,由公元推干支的问题也同样可以解决。

  值得注意的有两点:第一,众所周知,完整的六十干支表早在殷商甲骨文中就已出现,通常认为六十干支在当时已用于纪日,但这并不等于那时已用于纪年。文献所见我国古代曾采用多种纪年方法,如岁星纪年、以王公在位的年次纪年等。著名的《春秋》一书就是以鲁国国君在位的时间纪年。真正以政府诏令的形式规定采用干支纪年已是东汉时候的事情了,距今还不足二千年。现在我们看到的各种历谱中在实行干支纪年以前的某年干支均为后人推算所加。第二,由于我国古代的历法属于阴阳合历,按照传统历法制定的年历长度和现行公历(即格里高利历Gregorian calendar)及其前身罗马的儒略历(Julian calendar)之年历长度并不相同,因此,有关公元与干支两种纪年的换算,说公元某年相当于某干支年,都只是一种大致的对应而已,正如现在每年公历的元旦与农历的大年初一总是难以重合一样,这一点也是应该说明的。

  二、由干支推公元

  如前所述,由公元推干支往往只有一个结果,即公元前后某年相当于某干支年。然而由干支推公元情况就不同了。以前汤有恩编的《公元干支推算表》(文物出版社1961年)中由干支推算公元部分实际上是逐年排列,谈不上是“推算”。到目前为止,笔者也未看到真正采用数学公式进行推算的方法。

  根据自己的研究,笔者发现尽管干支纪年60年一循环,但只要有一定的时间范围作为参照,由干支推公元的问题也是可以解决的。现假设这一参照系为C,代表公元任意一个世纪。如果是求公元二十世纪的某干支年,则C=20,余类推。

  设100(C-1)÷60的余数为N,则N=mod[100(C-1),60]

  若所求干支在表一中对应的序数为P

  则求公元某世纪C的某干支年(对应于表一中的序数为P)的公式可表述为:

  100(C-1)+{P-[N-4]}+30{1-sgn[P-(N-4)]}

  试举例说明:

  例1,若求公元二十世纪的己亥年,则C=20,P=35(查表一知己亥对应序数为35)。首先由C=20算出N=mod[100(C-1),60]的值为40,即100(20-1)÷60的余数N为40;然后将C、P、N的值代入上述公式,即

  100(C-1)+{P-[N-4]}+30{1-sgn[P-(N-4)]}

  =1900+{35-[40-4]}+30{1-sgn[35-(40-4)]}

  =1900-1+60

  =1959

  也就是说,二十世纪的己亥年为1959年。

  例2,求公元十九世纪(C=19)的甲午年(查表一知P为30)。首先由C=19算出N=mod[100(C-1),60]的值为0,即100(C-1)÷60的余数N为0;然后将C、P、N的值代入上述公式,即

  100(C-1)+{P-[N-4]}+30{1-sgn[P-(N-4)]}

  =100(19-1)+{30-[0-4]}+30{1-sgn[30-(0-4)]}

  =1800+34+0

  =1834

  也就是说,十九世纪的甲午年为1834年。

  在此需特别提醒的是:由于一个世纪等于100年,大于干支纪年的周期60,因此,同一世纪内有2/3的干支将出现两次,而另外1/3的干支(即位于每世纪的第40和50年代)只出现一次。当{P-[N-4]}+30{1-sgn[P-(N-4)]}的值小于或等于40时,表明所求干支年在同一世纪内还将重现一次,这时需再加上60便可得出该世纪内另一个干支相同的年份。上述举例2推算十九世纪的甲午年时,{P-[N-4]}+30{1-sgn[P-(N-4)]}的值等于34,小于40,故十九世纪的甲午年必然有两个:除了1834年外,还有1834+60,即1894年(甲午战争)。而例1中推算二十世纪的己亥年时,{P-[N-4]}+30{1-sgn[P-(N-4)]}的值等于59,大于40,故该世纪只有一个己亥年,即1959年。

  上述公式对借一甲60之数的弥补采用的是符号函数,因此,只适用于当{P-[N-4]}的值大于或小于0时。如果{P-[N-4]}正好等于0,则情况比较特殊。好在其出现频率很低,每300年中只有2次,即当C=3K(K为正整数)时的庚辰年,或当C=3K+2(K为正整数或0)时的庚子年,且必为该世纪的第60年(本文以“世纪年”作为一个世纪的结尾)。当然,也可以采用自定义的办法,将上述公式改写成:

  100(C-1)+[P-(N-4)]+60f{[P-(N-4)}

  设f{[P-(N-4)]}={
  0 若[P-(N-4)]> 0

  1 若[P-(N-4)]< =0

  如果不用上述公式进行运算,也可采用较为简易的心算。如上述例1求公元二十世纪(C=20)的己亥年(P=35)的推算可表述为以下步骤:

  第一步,由C=20算出100(C-1)÷60的余数N为40;

  第二步,算出N-4的结果等于36(注意:若不够减时需借60);

  第三步,用干支己亥对应于表一中的序数(P=35)减去第二步所得的值36,求出其结果等于59(同样,不够减时需借60);

  最后,用59加上100(C-1),得出二十世纪的己亥年为1959年。

  上述由干支推算公元的方法,可运用于历史时期的考古学研究。尤其是在野外考察时,对于有干支纪年的文物,在根据文物本身的特征推断出大致时代的情况下,可运用上述方法得出较为确切的年份,而无须借助任何历史纪年表。在对于两个以上不同干支纪年的历史文物进行比较时,上述方法更有帮助。

  至于公元前某世纪的某干支年,也可以用类似方法推导出来,只是具体推算略有不同。由于我国干支纪年主要是公元后的事情,对公元前干支的推算本文暂从略。

哈,有了电脑,还用自己推算呀?http://site.baidu.com/list/wannianli.htm到这里一查就知道了