淡泊明志 宁静致远
分类: C/C++
2006-11-14 10:39:12
农历算法简介以及公式
有关农历的东西有以下几篇文章:
一、节气的计算
先给节气进行编号,从近日点开始的第一个节气编为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 * sin(0.262 * x)
这个公式的误差在0.05天左右。
二、朔日的计算
从1900年开始的第m个朔日的公式是
M = 1.6 + 29.5306 * m + 0.4 * sin(1 - 0.45058 * m)
这个公式的误差在0.2天左右。
三、年份的确定
1864年1月0日是农历癸亥年,所以用当年减去1864,用10除得的余数作为年份天干的,用12除得的余数作为年份的地支,数字对应的天干和地支如下。
数字 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
天干 | 甲 | 乙 | 丙 | 丁 | 戊 | 己 | 庚 | 辛 | 壬 | 癸 | | |
地支 | 子 | 丑 | 寅 | 卯 | 辰 | 巳 | 午 | 未 | 申 | 酉 | 戌 | 亥 |