公历转农历、巧算星期、干支、节气算法原理.docVIP

  • 80
  • 0
  • 约2.98千字
  • 约 9页
  • 2020-09-14 发布于山东
  • 举报

公历转农历、巧算星期、干支、节气算法原理.doc

1、公历转换农历的算法 公历( Gregorian Calendar)与农历( Chinese Lunar Calendar)的转换关系不是一个简单的公式就可以完成,其中的转换比较复杂,原因是农历的制定相当 复杂,是根据天文观测进行指定的。比较常用并且比较简单的公历转换农历算法就是查表方法。首先要保存公历农历的转换信息:以任何一年作为起点,把从这一年起若干年的农历信息保存起来。 回想一下,我们平时是怎样来转换公历农历的呢?是查阅历书,历书中有每一天的公历农历,直接一查就可以了。那么我们可不可以也这样做呢?当然可以,但是这样做要收录每一天的信息,工作量就会很大,所以我们要简化这些信息。如何简化呢? 下面的三个表格是农历数据表 LunarCalendarTable的结构。总共使用了 32 位整数的 0~23 位。 6543210 表示春节的公历月份表示春节的公历日期 1918 1217 316 415 514 613 712 811 910 109 118 1 / 5 12713 农历 1-13 月大小。月份对应位为 1,农历月大 (30 天),为 0 表示小 (29 天表示当年闰月月份,值为 0 为则表示当年无闰月。 计算公历日对应的农历日期的方法:先计算出公历日离当年元旦的天数 n1,然后查表取得当年的春节日期,计算出春节离元旦的天数 n2,二者相减即可算出公历日离春节的天数 n3,以后再根据大小月和闰月信息就可以计算 n3 减去农历的每月天数,减的次数就是农历月份,最后剩余的天数就是农历日。 2、利于泰勒公式巧算星期 在应用数学中有一个计算某一天是星期几的公式,这就是泰勒公式。公式 如下: w=[c÷4] - 2c + y + [y ÷4] + [26(m+1) ÷,10]其中+ dw -就1是所求日期的星 期数。如果求得的数大于(小于) 7,就减去(加上) 7 的倍数,直到余数小于 7 为止。式子中 c 是指公元年份的前两位数字, y 是后两位数字, m 是月数, d 是日数。方括弧 [] 表示对于括号中的数字取整。还有一个特别要注意的地方:所求的月份如果是 1 月或 2 月,则应视为上一年的 13 月或 14 月,也就是公式中 m 的取值范围是从 3 到 14 而不是从 1 到 12。 3、干支纪法 天干是:甲、乙、丙、丁、戊、己、庚、辛、壬、癸,也叫天干;地支 是:子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥,也称十二地支。干 支还是阴阳之分:甲、丙、戊、庚、壬为阳干,乙、丁、己、辛、癸为阴干; 子、寅、辰、午、申、戌为阳支,丑、卯、巳、未、酉、亥为阴支。以一个天 干和一个地支相配,排列起来,天干在前,地支在后,天干由甲起,地支由子 起,阳干配阳支,阴干配阴支 (阳干不配阴支,阴干不配阳支 ),天干经六个循 环,地支经五个循环正好是六十,就叫做 “六十干支 ”。按照这样的顺序每年用 一对干支表示,六十年一循环,叫做 “六十花甲子 ”。 六十花甲子 1.甲子 11.甲戌 21.甲申 31.甲午 41.甲辰 51.甲寅 2.乙丑 12.乙亥 22.乙酉 32.乙未 42.乙巳 52.乙卯 2 / 5 3.丙寅 13.丙子 23.丙戌 33.丙申 43.丙午 53.丙辰 4.丁卯 14.丁丑 24.丁亥 34.丁酉 44.丁未 54.丁巳 5.戊辰 15.戊寅 25.戊子 35.戊戌 45.戊申 55.戊午 6.已巳 16.已卯 26.已丑 36.已亥 46.已酉 56.已未 7.庚午 17.庚辰 27.庚寅 37.庚子 47.庚戌 57.庚申 8.辛未 18.辛巳 28.辛卯 38.辛丑 48.辛亥 58.辛酉 9.壬申 19.壬午 29.壬辰 39.壬寅 49.壬子 59.壬戌 10.癸酉 20.癸未 30.癸巳 40.癸卯 50.癸丑 60.癸亥 干支纪年法: 如甲子为第一年,乙丑为第二年,丙寅为第三年 六十年为一周。一周完了,再由甲子年起,周而始,循环下去。例如 1929 年是农历己巳年, 1930 年是农历庚午年 到 1989 年又是农历己巳年。我们在日历上看到的己巳年、庚午 年,就是按干支纪年这种方法排列下来的。阳历年份除以 60 的余数减 3 便得该 年农历干支序号数,再查上面的干支便是干支年纪。 如果序号数小于、等于零则于支序号数加 60。例如,求 1991 年干支; 1991 ÷ 60=33余 11,年干支序号数 =11-3=8。查干支表知该年为辛未年。又如求 1983 年干支: 1983 ÷ 60=33余 3,干支序号 =3-3=0,加上 60,查干支表知该年为 癸亥。 干支纪月法: 干支纪月法未普遍实行,主要为星相家推算八字用。其方法为:若遇甲或己的年份,正月是丙寅;

文档评论(0)

1亿VIP精品文档

相关文档