Chinaunix首页 | 论坛 | 博客
  • 博客访问: 948727
  • 博文数量: 134
  • 博客积分: 7443
  • 博客等级: 少将
  • 技术积分: 1411
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-10 20:18
文章分类

全部博文(134)

文章存档

2012年(7)

2011年(29)

2010年(16)

2009年(6)

2008年(18)

2007年(58)

分类: C/C++

2007-02-13 14:38:55

历法基本知识总结,不废话。

太阳公转周期,一年时间约365.2425天。

公历为了对齐公转周期,4年一闰,100年一停闰,400年加一闰。 400年共97闰, (365×400+97)/400 = 365.2425

农历,一个月相周期为一月,月相周期大约为29.53,   有大小月之分,大月30天,小月29天。月相变化受到地球公转和月亮围绕地球转的共同影响,两个都是椭圆轨道,且不在一个平面上,非常复杂。所以,大小月变化规律不是一个简单的规律。

农历为了对齐公转周期,每19年加7个闰月,

因为,农历的推算比较复杂, 大多使用查表法进行计算,包括我这里提供的算法。

我一直想实现一个计算轨道的推算方法,因为人懒,现在还没有什么进展。我会继续关注。

现在看到网上没有找到满意的C++查表农历算法法实现,所以自己实现了一个。

luanrday - 使用查表发实现公历转换为农历

文件说明
   luanrday.h     头文件,声明了公历到农历转换的函数
   luanrday.cpp   实现文件,实现了公历到农历的转换函数
   chdate.cpp     例子程序,使用luanrday实现功能:使用汉字显示当前农历日期.
   Makefile       编译chdate使用

接口说明
   请阅读文件luanrday.h

例子
    Lunar::Date ldate =  LuanrDate(2008,8,2);
    //ldate即保存农历日期, 其中:
    //     年:    ldate.year
    //     月:    ldate.month
    //     日:    ldate.day
    //   是否润月: ldate.leap











update 2009-11-16
文件:luanrday-0.4.tar.gz
大小:4KB
下载:下载



阅读(8288) | 评论(10) | 转发(0) |
0

上一篇:我的简单命名法

下一篇:抽象出对象

给主人留下些什么吧!~~

chinaunix网友2010-09-08 17:55:09

打酱油--2010年的飘过. 感谢!!!

cuichaox2009-11-16 22:16:39

新版本 luanrday-0.4.tar.gz 对1901-2049年段进行了全部修正

viechang2009-11-13 10:11:15

因为日期是连续的,所以一年的出了问题,后面所有的年份几乎都要修改,有点恐怖。。

viechang2009-11-13 10:08:40

从2009阴历5月24日开始,已发现有5、6个年份的数据有问题

cuichaox2009-10-23 13:23:08

仍然可能有年份表不正确的年份,没有对每天校对。