首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > C/C++ > 农历算法简介以及公式
【标  题】:农历算法简介以及公式
【关键字】:
【来  源】:http://blog.csdn.net/ammana_babi/archive/2006/11/09/1375638.aspx

农历算法简介以及公式

农历算法简介以及公式

一、节气的计算
  先给节气进行编号,从近日点开始的第一个节气编为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

天干

 

 

地支

当年的1月0日换算为积日,可以用年份减去1900得到的年数被4整除,所得商数作为 y(D4),余数作为y(M4),y(M4)为零的年份是公历闰年,积日是
       D(1) = 1461 * y(D4) - 1
y(M4)不为零的年份是公历平年,积日是
       D(1) = 1461 * y(D4) + 365 * y(M4)
四、月份的确定
  计算前一年冬至的积日F(0),并用F(0)计算冬至所在的朔月m及其朔日M(0),就可以推算冬至的农历日期,冬至所在的农历月份总是十一月。计算下一个中气F(1)和下一个朔日M(1),如果F(1)<M(1),那么该月就是上一个月的闰月,并把这个中气作为F(2),以后的中气、朔日和农历月份也这样确定。

 
总结面试时没有回答上的内存对齐问题:【上一篇】
BT种子的简单分析(源码):【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • shell学习笔记 NO.17(《UNIX和shell程序设计权威教程》)
  • 花粉过敏症花粉过敏症状花粉过敏的症状花粉过敏的治疗
  • 在DELPHI7中不使用任何第三方控件,实现放在工具栏上可拖动的XP风格菜单
  • MP3文件的播放器
  • FreeBSD6.0编译定制的内核
  • DMD 0.140发布
  • freebsd 4.10的一个BUG
  • 产生密码,记录到数据库,然后发送给用户。
  • Mixed DLL Loading analysis
  • PL/SQL单行函数和组函数详解
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.