打印

先看看这篇**吧

[复制链接]
5317|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
mikezhong|  楼主 | 2007-7-28 14:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位好,在网上找了一阵,有的说阳历转阴历有算法,有的说没有,但具体怎样转?也是没有一点头绪啊.......看了匠人的万年历算法,里面一堆的表,也不知道是否正确.现成的程序都不重要,需要的是思路.请各位提点一下.....谢谢.

相关帖子

沙发
wh6ic| | 2007-7-28 16:34 | 只看该作者

查表最方便

使用特权

评论回复
板凳
mikezhong|  楼主 | 2007-7-28 17:18 | 只看该作者

谢谢.

谢谢,查表,但是这个表怎样做呢?也是一个问题.因为不太可能一年一年的日期来对照建表吧....如何建表呢?.........网上有的也无法判定是否正确因为没有思路..

使用特权

评论回复
地板
dengm| | 2007-7-28 17:47 | 只看该作者

一年一年的日期来对照建表

使用特权

评论回复
5
conwh| | 2007-7-28 17:57 | 只看该作者

阴历60年一循环,具体的日期就得靠表了

使用特权

评论回复
6
mikezhong|  楼主 | 2007-7-28 18:16 | 只看该作者

谢谢.

60年一轮,要按照日期1年1年建表?..........
不知那个日历本是谁来推算的,,,他们拿什么来照着做日历?.....

使用特权

评论回复
7
gyt| | 2007-7-28 20:18 | 只看该作者

好像

好像是根据什么太阳月亮黄道之类,挺复杂的。

使用特权

评论回复
8
conwh| | 2007-7-28 20:21 | 只看该作者

是黄历

使用特权

评论回复
9
naofei67| | 2007-7-28 20:56 | 只看该作者

7楼正解,阴历是月亮历法,5楼60年有误.

具体要靠天文台测量的.其中还有闰月(多一个月,而不是阳历的多一天)之类
月球转动越来越慢, 地球转动也不稳定, 所谓公式只能一时有效.
最可靠的还是天文台发布的.

使用特权

评论回复
10
judge| | 2007-7-28 22:33 | 只看该作者

有个算法的。 台湾人写的, 能算上下2万年。

但找不到了。

使用特权

评论回复
11
ayb_ice| | 2007-7-29 08:23 | 只看该作者

算法就是个数学公式。。。

使用特权

评论回复
12
mikezhong|  楼主 | 2007-7-29 09:13 | 只看该作者

谢谢.

ayb_ice 这是个怎样的公式,有算法吗?

使用特权

评论回复
13
maychang| | 2007-7-29 09:19 | 只看该作者

台湾人写的, 能算上下2万年

这个台湾人肯定是在忽悠。
现在使用的阴历是明朝末年才有的,不过三百多年历史,怎么能往回算两万年?

使用特权

评论回复
14
hq_y| | 2007-7-29 09:24 | 只看该作者

能算200年就够啦~~~~~~~~~~

使用特权

评论回复
15
ayb_ice| | 2007-7-29 09:25 | 只看该作者

GOOGLE一下,应该有的...

使用特权

评论回复
16
xwj| | 2007-7-29 09:30 | 只看该作者

这方面的东西网上太多了,LZ自己不会去搜索吗?


一般转换的原理就是以某一年的某一天为基准,算出公历到那一天的天数,再查表计算出农历的相关参数
表格是按照历法实现计算好的,一般程序都有相关讲解,除非你太浮躁而没仔细看
 
 
[附件]中国农历规则和日历原理 
日历的基本原理 
日历是以天文学的三个不同的周期作为基础的: 
  • 天:地球自转一周。 
  • 月:月球围绕地球运行一周。 
  • 年:地球围绕太阳运行一周。 

如果以天作为单位,天文学的一年的平均时间是 365.2421896698 - 0.00000615359 T - 7.29E-10 T^2 + 2.64E-10 T^3 天,其中 T 的表达式为 (JD - 2451545.0)/36525,JD 是 **n 天数。 
如果以天作为单位,天文学的一月的平均时间是 29.5305888531 + 0.00000021621 T - 3.64E-10 T^2 天,其中 T 的表达式为 (JD - 2451545.0)/36525,JD 是 **n 天数。 
世界各国的日历都是以天作为最小单位,但是年和月的算法却各不相同,一共有三大种类: 
  • 阳历:以天文年作为日历的主要周期,例如:中国公历。 
  • 阴历:以天文月作为日历的主要周期,例如:伊斯兰日历。 
  • 阴阳历:以天文月和年作为日历的主要周期,例如:中国农历。 

中国公历规则 
中国公历也就是世界通用的 Gregorian 历,它以年作为主要周期。为了和天文年保持同步,公历使用两种不同天数的年: 
  • 常年:365 天。 
  • 闰年:366 天。 

公历年一般都是常年,只有少数年是闰年,由下面三条规则确定: 
  • 一:如果年的数目是 4 的倍数,就是闰年。 
  • 二:但是,如果年的数目是 100 的倍数,规则一就无效,仍是常年。 
  • 三:但是,如果年的数目是 400 的倍数,规则二就无效,仍是闰年。 

根据规则一,公历每 4 年就比天文年多 0.03124 天: 
4 Gregorian years: 3 * 365 + 366 = 1461 days 4 tropical years:  4 * 365.2421896698 = 1460.9687586792 days

根据规则二,公历每 100 年就比天文年少 0.21897 天: 
100 Gregorian years: 76 * 365 + 24 * 366 = 36524 days 100 tropical years:  100 * 365.2421896698 = 36524.21896698 days

根据规则三,公历每 400 年就比天文年多 0.12413 天: 
400 Gregorian years: 305 * 365 + 95 * 366 = 146097 days 400 tropical years:  400 * 365.2421896698 = 146096.87586792 days

照此计算,公历每 2500 年就比天文年多出 1 天。 
公历将一年分为十二个月。常年每月的天数分布如下: 
月份    1    2    3    4    5    6    7    8    9   10   11   12天数   31   28   31   30   31   30   31   31   30   31   30   31

闰年的二月为 29 天。 
公历的月跟天文月毫无关系。 
公历还有一个跟年和月毫无关系的周期,叫作星期,每星期七天。公历第一年的第一天是星期一。 
公历 400 年共有 146097 天,正好是 7 的倍数,所以星期和年每 400 年循环一次。 
中国农历规则 
中国农历是阴阳历,同时跟天文月和天文年同步。 
农历月的天数是一个变数,有时是 29 天,有时是 30 天。 
农历每月的第一天是月亮全黑的日子。 
农历年由 24 个节气来确定,节气则由太阳的角度来确定。农历的第一个节气叫雨水,定在太阳的角度为 330 度的日子。其余的 23 个节气分别定在太阳的角度每变化 15 度的日子。下面的表格列出了 24 个节气的名称和定义: 
命称    角度    公历日期      周期
立春     315     2月 4日雨水     330     2月19日    29.8天惊蛰     345     3月 6日春分       0     3月21日    30.2天清明      15     4月 5日谷雨      30     4月20日    30.7天立夏      45     5月 6日夏满      60     5月21日    31.2天芒种      75     6月 6日夏至      90     6月22日    31.4天小暑     105     7月 7日大暑     120     7月23日    31.4天立秋     135     8月 8日处暑     150     8月23日    31.1天白露     165     9月 8日秋分     180     9月23日    30.7天寒露     195    10月 8日霜降     210    10月24日    30.1天立冬     225    11月 8日小雪     240    11月22日    29.7天大雪     255    12月 7日冬至     270    12月22日    29.5天小寒     285     1月 6日大寒     300     1月20日    29.5天

24 个节气中有 12 个是主节气:雨水,春分,谷雨,夏满,夏至,大暑,处暑,秋分,霜降,小雪,冬至,大寒。 
农历年跟天文年相差较大。农历常年有十二个农历月,有 353,354,或者 355 天,比天文年少大约 11 天。为了跟天文年同步,每隔三个农历常年左右,必需设一闰年。闰年有十三个月,添加的这个月叫闰月。 
农历十二个月的名称分别为:正月,二月,三月,四月,五月,六月,七月,八月,九月,十月,冬月,腊月。 
农历闰年闰月的确定比较难,规则有两条: 
  • 一:冬至必须落在农历冬月。如果落不上,腊月之前就要添上一个月,成为闰年。 
  • 二:如果是闰年,冬月后边第一个不含主节气的月份定为闰月。闰月使用前一月份的名称。 

农历年以 60 年为一周期,每年的名称由 10 个天干的一个字和 12 个地支的一个字排列而成。10 天干为:甲,乙,丙,丁,戊,己,庚,辛,壬,癸。12 地支 为:子,丑,寅,卯,辰,巳,午,未,申,酉,戌,亥。12 地支有 12 动物生肖 与其对应:鼠,牛,虎,兔,龙,蛇,马,羊,猴,**,狗,猪。 
跟据历史记载,农历年已经经过了 78 个周期。今年,公历 1999 年,是第 79 个周期的第 17 年,也就是农历第 4696 年。 
总结起来,中国农历有下例 6 条规则: 
  • 一:月全黑规则 - 月全黑的日子是农历月的第一天。农历月周期由此而定。 
  • 二:24 节气规则 - 24 节气把天文年按太阳角度分成 24 等份,15 度一节气。这个规则确定了农历和天文年的关系。 
  • 三:冬至规则 - 冬至必须落在农历冬月。如果落不上,腊月之前就要添上一个月,成为闰年。 
  • 四:闰月规则 - 如果是闰年,冬月后边第一个不含主节气的月份定为闰月。 
  • 五:60 年周期 - 农历年以 60 年为一周期。 
  • 六:规则一和二的计算必须以中国南京紫金山天文台的观察为准。 

使用特权

评论回复
17
conwh| | 2007-7-29 09:37 | 只看该作者

太详细了

使用特权

评论回复
18
xwj| | 2007-7-29 09:52 | 只看该作者

先看看这篇**吧


节选:
 
3.1.5.1 农历历法详细规则

    中国的农历在 1929 年以前以北京当地的经度 116°25′为计算基准,之后以北京时间也就是东经 120°的东八区标准时间为计算基础。农历有四条基本规则:

    1. 月朔时刻所在之日定为农历月初一。
    2. 如某节气交节时刻落于初一本日内(0 时后到 24 时前),
       即使其交节时刻早于月朔时刻,也算落在此月中。
    3. 冬至必须出现于农历十一月内。
    4. 相邻的冬至交接时刻间(岁内)如出现 13 次月朔也就是 12 个完整
       的农历月,则此岁称为闰岁,此岁中有一个月需要设置成闰月。
       因为期间必然有 12 个中气,所以至少有一个农历月没有中气落入其
       中,闰岁内第一个没有中气的月份定为闰月,月份数与前一月相同。

    对于第四条规则,需要强调的是年内和岁内两个的概念是不同的,如出现岁内有两个农历月无中气的情况,则以第一个为闰月,而此闰月可能不会落在本年内。而如果岁内有一农历月无中气但本岁只有 12 次月朔也就是 11 个完整的农历月的情况下,那个无中气的月并不会被置闰。典型的例子是 2033 年闰 11 月:2033 农历年第 8 个农历月和第 11 个农历月都无中气,但因为 2032 农历年冬至(11 月)到 2033 农历年冬至(11 月)间只有 11 个完整的农历月,所以不是闰岁,无需加入闰月。2033 年冬至(11 月)到 2034 年冬至(11 月)间有 12 个完整的农历月,所以是闰岁,以冬至日后出现的第一个无中气的农历月为闰月,正好是 11 月后面的一个农历月,于是就闰 11 月。
    总的说来一句话,无中气只是闰月的必要条件并非充分条件,只有岁内月朔太多需要置闰月时,才会寻找岁内第一个无中气的作闰月。旧版历法以 2033 年第 8 农历月为闰 7 月,只因为它是年内第一个无中气的农历月,并未考虑到是否闰岁的情况。新版已经改为了闰 11 月。
    另外,由于目前节气采用定气,地球在远日点时运动速度慢,导致中气在冬天里推迟比夏日里慢,因此无中气的月份大多都落在夏天前后,几百年来极少有出现闰 12 月的,这基本保证了春节的唯一。农历历法的精妙可见一斑。
    注:中国现代的历法以南京紫金山天文台发布的内容为权威。如本文的阐述和该权威有冲突,以该权威为准。

3.1.5.2 农历计算

    从上文的农历规则来看,农历完全是天文历法,加上月亮运动规律的不稳定,导致很难对其进行精确计算。目前权威的计算方法是根据天文观测数据建立月球、地球、太阳的运行数学模型来精确计算各个朔日与中气的时刻再加以历法推算。
 
--实际上也不是无规律,只是规律过于复杂罢了,因此,文章作者总结如下:
    本来以前以为阳历转阴历的算法可能并不难,今天有个网友给了段代码给我一看,我就晕了,才知道阴历算法这么的复杂,然后我就将这个网友给的代码收藏了一下。以备后用 
    真恐怖,没有点深厚的数学知识还真没有办法写出完整的算法,中国的文化果然博大精深,牛X牛X
 
相关链接:http://blog.csdn.net/qsd007/archive/2007/03/12/1526824.aspx

使用特权

评论回复
19
gyt| | 2007-7-29 09:55 | 只看该作者

鼓掌!!!

使用特权

评论回复
20
judge| | 2007-7-29 09:58 | 只看该作者

以前,我也做这个。

查来查去,不得要领,应说这个算法是比较复杂的。
他又有月亮,又有太阳的。   我想是应根据运行轨道来算。
  后来还是拿本万年历,搞个表格草草了事。才100年。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

250

帖子

1

粉丝