标题:一个阳历与阴历转换的问题!
只看楼主
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
 问题点数:0 回复次数:5 
一个阳历与阴历转换的问题!

问题:如何用c语言编一个将阳历任意年的某月某日转换成阴历日期?
资料如下:
中国的阴历,又称农历,大家应该都很熟悉。很多的传统节日,像春节,中秋都是阴历的节日。不过,若是问起阴历的规则,怕是知道的人就不多了。多数人知道初一是新月出现的那一天,月圆的那一天则在十五左右。不少人也知道二十四节气在阳历的每月中大概的日期。再细节的概念如闰月对大多数人则不甚了解了。本人经过一番查找与阅读,终于对阴历的规则有了一定的认识。在此愿与大家分享。
首先阴历以月为基本单位,一个月以新月出现的那一天为始直至下一个新月出现的前一天。由于月亮公转的周期介于29到30天之间,阴历的一个月也就由新月出现时刻的早晚或是29天或是30天。大月为30天,小月为29天。与阳历不同的是,大小月在不同的年中不固定。如春节的前一天常称为大年三十,但有不少年如2000年的阴历十二月只有29天。由于十二个月的时间较阳历年即地球绕太阳公转一周的时间短11天左右,为了使阴历年与阳历年保持相对稳定,每隔两三年就需要加入一个闰月。大约每十九年要加入七个闰月。而二十四节气则是由地球在绕太阳公转的轨道上的位置确定的。以每年的冬至为始,每15度为一个节气。是故二十四节气在阳历的每月中有大概固定的日期。古时以二十四节气指导农耕,这就是阴历又称农历的原因。其中阳历下半月的十二个节气又称为中气。中气出现的时刻和闰月的确定有直接的关系。
中国阴历的计算有下列四条规则:
所有新月和节气出现的时刻的计算以东经120度即东八区标准时为准。但计算1929年以前的阴历时应以北京即东经116度25分的当地时为准。此条规则用以区分中国阴历和其他类似阴历如日本阴历。
新月出现的一天为一个月的第一天。如某个节气的出现时刻也在这一天,则不论该节气的出现时刻是否比新月晚,一律算落入新的一个月中。
每年的冬至总是出现在这年的阴历十一月中。
从一年的冬至后一天起到下一年冬至这一天止的这段时间中,下称其间,如有十三个新月出现,则其间要加入一个闰月。需要加入闰月时,其间第一个没有中气的月为闰月。因为其间只有十二个中气,所以其间至少有一个月没有中气,也存在有两个月没有中气的可能性。但这种情况下只有第一个没有中气的月为闰月。闰月的前一个月为几月则该闰月称为闰几月。
以上所列的阴历的计算规则是在清朝顺治年间,即公元1645年,开始采用的。以上规则的一个重要特点就是理论上完全以天文观测为依据,其中没有任何数学关系。这和阳历,即格里历,完全是由数学关系确定的形成了鲜明的对比。当然,具体到未来阴历的计算,仍然需要月亮与地球运动的数学模型,而且精度高的这种数学模型相当复杂,在没有电脑的情况下,一般人根本不可能推算出精确的阴历来。而阳历的数学关系则非常简单,是不是闰年很容易计算。这又形成了另外一种鲜明的对比。
公历,也就是太阳历,其本质就是对太阳在黄道上的视位置进行划分
农历,也就是月亮历,其本质就是对月球在白道上的视位置进行划分
因此公历->农历的转换就是
已知太阳黄经刻度求月亮白经刻度的计算
在换算成更通俗一点的解释就是
已知地球轨道位置,求此时月球的视位置
粗略的计算方法需要的参数就是地球、月球的基本轨道参数(半长径、半短径、向径、偏心率、周期等)、质量,另外还包括轨道焦点的进动和地球的章动这两个偏移量
具体的计算公式就比较复杂了,其中包含大量的三角函数方程和迭代计算法
以上是一个基本的计算方法,用于日历换算足够了
当然精确一点的方法则要考虑到大行星的摄动,也就是他们的引力对地球和月球的轨道的影响,最主要的是离我们最近的火星和金星,以及质量最大的木星,这种计算精度适用于阿波罗登月之类的活动
最吹毛求疵的计算方法是把以上传统力学计算公式换成相对论公式,这样算出来的是最精确的,适用于吃饱了撑得和相对论狂热粉丝。
此问题含金量比较高!换句话说有金钱奖励!

搜索更多相关主题的帖子: 阴历 阳历 
2005-12-07 19:20
zwk035
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2005-10-28
得分:0 
2005-12-14 22:52
thq_2004423
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2005-12-15
得分:0 
看着就头疼,楼主是干什么的????
2005-12-16 16:02
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
得分:0 
有人说自古以来关于阴阳历转换的问题好象没有几个人能弄的懂?那么请问nokia手机上的那个能查看阴阳日历的程序是如何编出来的呢?谁有原代码发来看看啊?我从小就对这个问题很感兴趣的,但是一直到现在都没弄明白,如果那位高手能回答并实现我的问题我会很感激的!

♂ 死后定当长眠,生前何须久睡。♀
2006-04-09 01:21
盖茨他爹
Rank: 6Rank: 6
等 级:贵宾
威 望:28
帖 子:5255
专家分:0
注 册:2005-5-3
得分:0 
阴历的规律很麻烦,所以手机上的阴历是用的存储的方式,所以多数只能查到2099年
2006-04-09 01:42
303770957
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:6
帖 子:838
专家分:2125
注 册:2005-9-10
得分:0 
盖茨他爹请看:http://bbs.bc-cn.net/bbs/dispbbs.asp?BoardID=56&ID=56187&replyID=&skin=1帮忙解决一下,谢谢了!

♂ 死后定当长眠,生前何须久睡。♀
2006-04-09 03:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-37152-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052869 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved