以文本方式查看主题

-  中华农历论坛  (http://bbs.nongli.net/index.asp)
--  历法知识  (http://bbs.nongli.net/list.asp?boardid=2)
----  怎样由农历日期求公历日期?  (http://bbs.nongli.net/dispbbs.asp?boardid=2&id=25602)

--  作者:ymy111
--  发布时间:2010/1/30 14:28:00
--  怎样由农历日期求公历日期?

网上的程序一般有公历求农历

那有农历求公历有没有简易算法?


--  作者:浪-淘-沙
--  发布时间:2010/1/30 14:52:00
--  

由公历求农历也没有简易算法的,不知楼主的公式从哪来的?

 

网上有些公式只不过是半经验公式,当求出的结果与实历不符时,需要人工校正的。

 

农历与公历是二套完全不同的历法,日期互相转换是相当难的事。简单通用的公式肯定是没有的。

一般地都是编程序来计算的。


--  作者:ymy111
--  发布时间:2010/1/30 14:53:00
--  
我指的就是有没有有农历求公历的程序算法
--  作者:浪-淘-沙
--  发布时间:2010/1/30 15:27:00
--  

网上的程序多了,至于源程序,请向作者本人索取。

 

http://www.nongli.com/item3/index.asp

这个帖子中就有由农历由公历的程序。

请自己去试一下。


--  作者:xjw01
--  发布时间:2010/1/30 17:56:00
--  

A、已知农历求公历,

B、已知公历求农历,

两个问题好象是互朔运算。实际计算其实不完全是这样的,应当说,主要是最后输出数据的时候,是公历还是农历的问题。以寿星为例,最后同时输出公历和农历,无所谓A问题还是B问题。当两个历表同时输出后,利用这两个历表可以用人工查找的方法(也可以用程序查找)角决A问题或B问题。

解决A和B问题,难度几乎完全一样,不管哪个问题,首先都要在内存创建两种历表——公历和农历。公历历表可以用一两个公式表达,农历历表则需要通过天文算法排算得到。

逻辑上分析,一定是这样的。A问题解决了,B问题自然易于解决。返之亦然。

 

B问题的计算过程:

求农历2008年1月十二日的公历

1、计算2008年、2009年的农历,至少要计算两年才可能解所有问题,有时候要计算3年,计算一年只解决部分问题,这个问题在论坛上曾经讨论过。

2、查到2008年1月十二日,读取它的儒略日数

3、再由儒略日数转为公历

 

A问题的计算过程:

求农历2008年1月12日的农历

1、计算2007年、2008年的农历,至少要计算两年才可能解所有问题,有时候要计算3年,计算一年只解决部分问题,这个问题在论坛上曾经讨论过。

2、计算出2008年1月12日的日儒略日数n

3、再由儒略日在2008、2009年的农历快速找到农历日期(比如利用朔日的儒略日与n比对,很快就可找到日期)

 

综上,A、B问题第1步要解决的问题基本一致,只是第2、3步不一样。第1步是最麻烦的一步,也就是说A、B问题涉及的核心问题是一样的(第1步),在日历输出时不一样(第2、3步)

 

 

[此贴子已经被作者于2010-1-30 19:05:54编辑过]

--  作者:hiteyun
--  发布时间:2014/2/7 16:01:00
--  
以下是引用xjw01在2010-1-30 17:56:00的发言:

A、已知农历求公历,

B、已知公历求农历,

两个问题好象是互朔运算。实际计算其实不完全是这样的,应当说,主要是最后输出数据的时候,是公历还是农历的问题。以寿星为例,最后同时输出公历和农历,无所谓A问题还是B问题。当两个历表同时输出后,利用这两个历表可以用人工查找的方法(也可以用程序查找)角决A问题或B问题。

解决A和B问题,难度几乎完全一样,不管哪个问题,首先都要在内存创建两种历表——公历和农历。公历历表可以用一两个公式表达,农历历表则需要通过天文算法排算得到。

逻辑上分析,一定是这样的。A问题解决了,B问题自然易于解决。返之亦然。

 

B问题的计算过程:

求农历2008年1月十二日的公历

1、计算2008年、2009年的农历,至少要计算两年才可能解所有问题,有时候要计算3年,计算一年只解决部分问题,这个问题在论坛上曾经讨论过。

2、查到2008年1月十二日,读取它的儒略日数

3、再由儒略日数转为公历

 

A问题的计算过程:

求农历2008年1月12日的农历

1、计算2007年、2008年的农历,至少要计算两年才可能解所有问题,有时候要计算3年,计算一年只解决部分问题,这个问题在论坛上曾经讨论过。

2、计算出2008年1月12日的日儒略日数n

3、再由儒略日在2008、2009年的农历快速找到农历日期(比如利用朔日的儒略日与n比对,很快就可找到日期)

 

综上,A、B问题第1步要解决的问题基本一致,只是第2、3步不一样。第1步是最麻烦的一步,也就是说A、B问题涉及的核心问题是一样的(第1步),在日历输出时不一样(第2、3步)

 

 

[此贴子已经被作者于2010-1-30 19:05:54编辑过]

农历日期与公历日期的互换,需要计算2-3年的农历,非常麻烦,产生麻烦是由于现行农历采用“年首起月法”的结果,如果放弃年首起月法,不再预先以某一个特定节气为基准,而改用新的“节气定月法”,就只需计算1个月的农历(或1个月的农历加1-5个月的中气)就行了。

A、已知农历日期求公历日期:
求农历2008年1月12日的公历
1、用星历数据计算包含2008年雨水日的月份朔日及下一个朔日;
2、计算该月包含的节气,用新的“节气定月法”规则判定是否属于“独立基准月”,“是”就进入第4步,如“否”就进入第3步;
3、补充计算其后1-5个月的中气,判定是属于“关联基准月”还是“非基准月”;
4、按“节气定月法”规则确定月份;
5、通过目标月份朔日儒略日数+11得到目标日期儒略日数;
6、转公历日期。

B、已知公历日期求农历日期:
求公历2008年1月12日的农历
1、转为儒略日数;
2、用星历数据计算包含此日期的农历月份朔日及下一个朔日;
3、计算该农历月份包含的节气,用新的“节气定月法”规则判定是否属于“独立基准月”,“是”就进入第5步,如“否”就进入第4步;
4、补充计算其后1-5个月的中气,判定是属于“关联基准月”还是“非基准月”;
5、按“节气定月法”规则确定月份;
6、通过目标日期儒略日数与朔日儒略日数间隔天数得到农历日期。

[此贴子已经被作者于2014-2-8 16:03:50编辑过]