|
|
技 术 资 料:|
全部 | 办公 | 图像
| 硬件 | 网络
| 开发 | 其它
|
| 标题:<农历算法简介以及公式> |
| 来源:精英培训网 |
类型:开发 |
日期:2008-1-26 |
内容:
有关农历的东西有以下几篇文章:
计算某天是星期几【C代码】
农历算法简介以及公式
农历中天干地支的计算【C代码】
农历一百年算法(1921~2021)【C语言代码】
农历两百年算法(1901~2100)【C语言代码】
一、节气的计算
先给节气进行编号,从近日点开始的第一个节气编为0,编号如下及其相应的月份如下:
0 小寒 腊月 6 清明 三月 12 小暑 六月 18 寒露 九月
1 大寒 腊月 7 谷雨 三月 13 大暑 六月 19 霜降 九月
2 立春 正月 8 立夏 四月 14 立秋 七月 20 立冬 十月
3 雨水 正月 9 小满 四月 15 处暑 七月 21 小雪 十月
4 惊蛰 二月 10 芒种 五月 16 白露 八月 22 大雪 冬月
5 春分 二月 11 夏至 五月 17 秋分 八月 23 冬至 冬月
把当天和1900年1月0日(星期日)的差称为积日,那么第y年(1900年算第0年)第x 个节气的积日是
F = 365.242 * y + 6.2 + 15.22 * x - 1.9 * sin0.262 * x
这个公式的误差在0.05天左右。
二、朔日的计算
从1900年开始的第m个朔日的公式是
M = 1.6 + 29.5306 * m + 0.4 * sin1 - 0.45058 * m
这个公式的误差在0.2天左右。
三、年份的确定
1864年1月0日是农历癸亥年,所以用当年减去1864,用10除得的余数作为年份天干的,用12除得的余数作为年份的地支,数字对应的天干和地支如下。
数字 0 1 2 3 4 5 6 7 8 9 10 11
天干 甲 乙 丙 丁 戊 己 庚 辛 壬 癸
地支 子 丑 寅 卯 辰 巳 午 未 申 酉 戌 亥
当年的1月0日换算为积日,可以用年份减去1900得到的年数被4整除,所得商数作为 yD4,余数作为yM4,yM4为零的年份是公历闰年,积日是
D1 = 1461 * yD4 - 1
yM4不为零的年份是公历平年,积日是
D1 = 1461 * yD4 + 365 * yM4
四、月份的确定
计算前一年冬至的积日F0,并用F0计算冬至所在的朔月m及其朔日M0,就可以推算冬至的农历日期,冬至所在的农历月份总是十一月。计算下一个中气F1和下一个朔日M1,如果F1<M1,那么该月就是上一个月的闰月,并把这个中气作为F2,以后的中气、朔日和农历月份也这样确定。
|
|
网址:http://www.czjypx.com |
|
|
|
|